Скрипт Google Apps, выравнивающий все ячейки на всех листах

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

На данный момент мне нужно просмотреть каждый лист и использовать этот макрос, чтобы выровнять его по вертикали и горизонтали. Есть ли способ настроить этот скрипт для выравнивания всех листов вместо того, чтобы делать каждый вручную?

 function Alignment() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
  spreadsheet.getActiveRangeList().setHorizontalAlignment('center')
  .setVerticalAlignment('middle');
};
 

Ответ №1:

Возьмите все листы и выполните итерацию по каждому листу:

 function Alignment() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheets = spreadsheet.getSheets();
  sheets.forEach(sheet=>{
  sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).activate();
  spreadsheet.getActiveRangeList().setHorizontalAlignment('center')
  .setVerticalAlignment('middle');
  });
};
 

Если вы хотите повысить производительность, но не сможете увидеть изменения, происходящие на листах, попробуйте следующее:

 function Alignment() {
  const spreadsheet = SpreadsheetApp.getActive();
  const sheets = spreadsheet.getSheets();
  sheets.forEach(sheet=>{
  let rg=sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
  rg.setHorizontalAlignment('center')
  .setVerticalAlignment('middle');
  });
};
 

Комментарии:

1. Потрясающе, спасибо! Однако я понял, что это плохая идея для электронной таблицы, в которой было 58 листов …. lol. Хотя это вызывает значительную задержку, это определенно работает!

2. Попробуйте не делать этого для максимальных строк, а просто сделайте это для диапазона данных

3. @Nitrolysis рад, что это сработало для вас. Рассмотрите мой обновленный ответ в соответствии с предложением Купера. Это должно быть намного быстрее и эффективнее. Я думаю, он вам больше подойдет. Если это не сработает, я заранее приношу извинения.

4. Вау, это невероятно приятно смотреть; и да, как вы сказали, это намного лучше. Но не так быстро, потому что он проходит через каждый, а не делает все сразу, а у меня более 50 листов, так что это займет некоторое время. Но большое вам спасибо!

5. @Marios Я не думаю, что второй код быстрее, но он намного лучше! Потому что это позволяет мне продолжать делать то, что я хочу, вместо того, чтобы видеть каждый лист, который он выравнивает, и быть неспособным что-либо сделать, пока это не будет сделано. Еще раз спасибо!