Регулировка высоты строк 3 и нижней части листа (где количество строк в листе постоянно меняется) [Google Sheets] - PullRequest
1 голос
/ 07 апреля 2020

Чего я пытаюсь достичь:

  • У меня есть флажок в ячейке C1.

  • Когда это проверено, я хочу отрегулируйте высоту строк 3 и вниз до нижней части листа, чтобы они автоматически меняли размер, чтобы «соответствовать данным».

  • Если флажок не установлен, я хочу настроить высоту строк строк 3 и до нижней части листа до 21.

Этого не происходит. Кто-нибудь может дать совет, почему?

Мой сценарий:

function onEdit(e)  {

 // This if-statement ensures the macro only runs when the checkbox in cell C1 is used.
 if (
   e.source.getSheetName() == "Meals" &&
   e.range.getColumn() == 3 &&
   e.range.getRow() == 1
 ) { 

   var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
   var Meals = spreadsheet.getSheetByName("Meals");
   var LastRow = Meals.getLastRow();

   var checkboxtest = e.range.getValue()     // This variable is used in the if-statement below, to see if the checkbox was checked or unchecked.

   if (checkboxtest == true) {               // If checkbox is checked...
     Meals.autoResizeRows(3, LastRow-2);     // set the row heights to auto-adjust.
   }else{                                    // If checkbox is unchecked...
     Meals.setRowHeights(3, LastRow-2, 21);  // set the row heights equal to 21.
   }
 }
}

1 Ответ

2 голосов
/ 07 апреля 2020
  • Когда флажок в ячейке "C1" установлен, вы хотите запустить автоматическое изменение высоты строки от строки 3 до нижней строки.
  • Когда флажок в ячейке " С1 "не отмечен, вы хотите установить высоту строки в 21 пиксель от строки 3 до нижней строки.
  • Вы хотите запускать сценарий при изменении флажка.

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

Проблема и обходное решение:

В этом случае, когда используется служба электронных таблиц, можно выполнить автоматическое изменение размера строк. Но, к сожалению, setRowHeights() не может быть использован для этой ситуации. Я также думаю, что это связано с ошибкой, упомянутой в комментарии ADW .

Так что в этом ответе я хотел бы предложить использовать метод batchUpdate Sheets API. для достижения вашей цели.

Когда ваш скрипт изменяется, пожалуйста, измените его следующим образом.

Использование:

  1. Пожалуйста, измените ваш скрипт следующим образом.
  2. Перед использованием этого сценария, , пожалуйста, установите устанавливаемый триггер события OnEdit для функции installedOnEdit, которая была изменена. Поскольку API Sheets нельзя использовать с простым триггером.
  3. Пожалуйста, включите API Sheets в службах Advanced Google .
  4. . В качестве теста снимите флажок ячейки "C1 ".

Модифицированный скрипт:

От:

function onEdit(e)  {

До:

function installedOnEdit(e)  {

И

От :

Meals.setRowHeights(3, LastRow-2, 21);

Кому:

const requests = {updateDimensionProperties: {
  properties: {pixelSize: 21},
  range: {dimension: "ROWS", sheetId: Meals.getSheetId(), startIndex: 2},
  fields: "pixelSize"
}};
Sheets.Spreadsheets.batchUpdate({requests: requests}, spreadsheet.getId());
  • После установки функции installedOnEdit и включения Sheets API, когда флажок снят, высота строки изменяется до 21 пикселя.

Ссылки:

Если я неправильно понял ваш вопрос, и это не то направление, которое вам нужно, Я прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...