Я пытаюсь написать скрипт, который будет искать новую запись из формы Google в лист Google и перемещать данные из определенных ячеек в отдельную электронную таблицу. У меня есть следующий скрипт, и у меня проблемы с переменной rowValues. Ниже приведен сценарий в том виде, в котором он написан в настоящее время.
function onEdit(){
var ss = SpreadsheetApp.getActive();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CopyFromSheet");
var rowId = sheet.getActiveRange().getRowIndex();
var rowValues (rowId);
Logger.log(rowValues);
var destValues = [];
destValues.push(rowValues[0][0]);// copy data from col A to col A
destValues.push(rowValues[0][1]);// copy data from col B to col B
destValues.push(rowValues[0][2]);// copy data from col C to col C
destValues.push(rowValues[0][5]);// copy data from col F to col D
destValues.push(rowValues[0][6]);// copy data from col G to col E
destValues.push(rowValues[0][7]);// copy data from col H to col F
destValues.push(rowValues[0][8]);// copy data from col I to col G
destValues.push(rowValues[0][21]);// copy data from col V to col H
destValues.push(rowValues[0][23]);// copy data from col X to col I
var dest=SpreadsheetApp.openById('SheetID#').getSheetByName('CopyToSheet');
dest.getRange(dest.getLastRow()+1,1,1,destValues.length).setValues([destValues]);
}
Триггер onEdit не срабатывает, когда форма Google записывает другую строку на лист. Вы должны использовать триггер onFormSubmit.





function onFormSubmit(e){
var destValues = [];
destValues.push(e.values[0]);
destValues.push(e.values[1]);
destValues.push(e.values[2]);
destValues.push(e.values[5]);
destValues.push(e.values[6]);
destValues.push(e.values[7]);
destValues.push(e.values[8]);
destValues.push(e.values[21]);
destValues.push(e.values[23]);
var dest=SpreadsheetApp.openById('SheetID#').getSheetByName('CopyToSheet');
dest.getRange(dest.getLastRow()+1,1,1,destValues.length).setValues([destValues]);
}
Купер, использование функции onFormSubmit имеет смысл. Спасибо что подметил это. При запуске этого скрипта он отправляет данные, но данные из первой записи массива [0][0] в данном случае отправляются на лист/ячейки назначения по 1 символу на ячейку. Например, дата — это данные в первой передаваемой ячейке. На листе CopyTo первая ячейка имеет значение «1», вторая ячейка имеет значение «2», третья ячейка имеет значение «/» и т. д. Я предполагаю, что с dest.getRange(dest.getLastRow()) что-то не так. +1,1,1,destValues/длина)...
Да, я только что заметил, что сделал ошибку, просто удалив первый индекс нуля
Удаление первого нижнего индекса 0 из любой строки создает ошибку, из-за которой я не могу сохранить сценарий. Удаление первой строки из массива просто останавливает запись первого символа «1».
Это должно сделать это
Сделал это! Спасибо, Купер!
Могу я спросить вас о деталях
trouble with the rowValues variableизI have the following script and am having trouble with the rowValues variable.? А что такоеvar rowValues (rowId);?