API-интерфейс Google листов, добавляющий несколько строк

Я пытаюсь понять это и, должно быть, упускаю из виду что-то базовое. (Мне потребовалось WAAAY больше времени, чем следовало, просто чтобы понять, что я не добавил триггер.)

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

Поэтому, хотя страница Form Responses 1 будет расширяться, я хочу использовать триггер при отправке формы, чтобы добавить строку на страницу согласования и скопировать формулы вниз. Я, кажется, не могу понять, что нужно добавить. Глядя на страницу Google для увеличения количества строк, я не уверен, что я там делаю не так, но ДУМАЮ, что мне нужно добавить больше функций Java на свой компьютер.

Если я просто скопирую и вставлю пример на новый лист, большая часть кода будет черным, а не стандартными цветами редактора. При сохранении появляется сообщение «Отсутствует; перед оператором. (Строка 1, файл« Код »)». Первая строка просто «import com.google.gdata.client. spreadsheet. *;» Итак, нулевой: какой самый простой код я могу использовать, чтобы добавить эту пустую строку? Тогда сначала: нужно ли мне импортировать кучу вещей, чтобы это (добавление строк) работало? Во-вторых: если да, и я передаю кому-то право собственности на лист, нужно ли им также выполнять импорт? В-третьих: если да, и я хочу вносить правки на другом устройстве, нужно ли мне импортировать и туда? Четвертое: в примере используется Update (), но я не могу найти функцию Update () в документации по javascript или googlesheets api.

Это код, который я пробую, и закомментированные варианты, которые, похоже, не работают:

function onFormSubmit(e) {
Logger.log('form submit triggered') 
  var sheet = SpreadsheetApp.getActive()
  var sss = sheet.getSheetByName('Reconciliation')
  var col2 = sss.getRange("B:B");
  var col2val = col2.getValues();
  var counter = 0;
  var sssrange = sss.getDataRange();

//  sss.Rows = sss.getLastRow() + 1 //Object does not allow properties to be added or changed if I uncomment - this seems to match the google example line though
Logger.log(sss.getLastRow());//=8
  var newsssrange = sssrange.offset(1,0); // didn't actually think this would work (since it also had the .update() part that previously didn't work for me) but came across it and was getting desparate.
//  sss.setRowCount(sss.getLastRow() + 1); // TypeError: Cannot find function setRowCount in object Sheet. 
Logger.log(sss.getLastRow()); //=8 
//  sss.Update();//TypeError: Cannot find function Update in object Sheet.
}

person Rodger    schedule 03.04.2016    source источник


Ответы (2)


Вздох ... Мне все еще интересно, как добавить больше строк, но я ответил на мою первоначальную потребность в добавлении одной строки, поскольку отправка формы добавляет только одну строку. Итак, я собираюсь ответить на него, поскольку я провел так много поисков, и по какой-то причине этого никогда не было, может быть, кто-то сочтет это полезным, если у него такая же проблема.

function onFormSubmit(e) {
  var sheet = SpreadsheetApp.getActive()
  var sss = sheet.getSheetByName('Reconciliation')
  sss.appendRow(['']);
}

Обратите внимание, что при этом добавляется одна пустая строка. Если вы запустите его второй раз, он не добавит вторую пустую строку, поскольку appendRow () добавляет после последней строки с данными. Если вы вставите туда строку или что-то в этом роде и будете повторять ее снова и снова, вы получите несколько строк.

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

person Rodger    schedule 03.04.2016

Знаете ли вы, что формула массива автоматически создает новые строки? Если вы вставите эту формулу в Sheet2:

=OFFSET(Sheet1!A1,,,counta(Sheet1!A:A))

а затем вставьте новые значения в диапазон Sheet1 A: A, тогда новые строки будут добавлены на Sheet2.

person Max Makhrov    schedule 04.04.2016
comment
Что ж, это определенно может сработать. Он прекрасно собирает данные. Однако это не повлияло на формулы. Есть ли способ сделать то же самое, о чем я слишком много думаю? - person Rodger; 04.04.2016
comment
Думаю, вы могли бы заставить все работать с помощью arrayFormulas. Есть много примеров в stackoverflow. На данный момент вам нужно добавить строку на страницу сверки и скопировать формулы вниз. Но ArrayFormulas может выполнять практически любую работу без необходимости извлекать формулы. OFFSET только для копирования. - person Max Makhrov; 05.04.2016