У меня есть:
- Лист Google, который автоматически получает новые заказы на покупку через zapier
- Заказы вставляются в виде новых строк
- Код ниже, это простой триггер с привязкой к контейнеру, доступ к которому можно получить, перейдя в Инструменты> Редактор сценариев на странице Google
Я хочу:
- Для создания новой электронной таблицы всякий раз, когда строка вставлена в исходную электронную таблицу ЭТА ЧАСТЬ РАБОТАЕТ
- Для копирования указанной c информации из исходной электронной таблицы в новую электронную таблицу ЭТА ЧАСТЬ НЕ РАБОТАЕТ
Первоначально я использовал getActiveSpreadsheet для получения переменной sourceSpreadsheet и подумал, что, возможно, активная электронная таблица изменилась после того, как я создал новую электронную таблицу. Чтобы попытаться это исправить, я использовал openByID вместо getActiveSpreadsheet, но функция все еще не работает. Любая помощь будет высоко ценится!
// Function will run automatically on a change to the spreadsheet by looking at the event object, or e
function onChange(e){
// Look in the log to see what type of change is represented by the event
Logger.log(e.changeType);
// Only run the rest of the function if the type of change represented by the event object is an inserted row
if(e.changeType=='INSERT_ROW'){
// Get the current spreadsheet that is the source
var sourceSpreadsheet = SpreadsheetApp.openById('File ID');
// Get the first sheet of the current spreadsheet (0 indexed)
var sourceSheet = sourceSpreadsheet.getSheets()[0];
// Get the last row of the sheet that has data in it
var lastrow = sourceSheet.getLastRow();
// Get the value on the last row, for 3 different columns
var sourceRange1 = sourceSheet.getRange(lastrow, 1).getValues();
var sourceRange2 = sourceSheet.getRange(lastrow, 2).getValues();
var sourceRange3 = sourceSheet.getRange(lastrow, 3).getValues();
// Create new destination spreadsheet
var newSpreadsheet = SpreadsheetApp.create("My New File Name");
// Get the first sheet of the new spreadsheet (0 indexed)
var newSheet = newSpreadsheet.getSheets()[0];
// Set destination range to put data to
var newRange = newSpreadsheet.getRange(1,1).setValues(sourceRange1)
var newRange2 = newSpreadsheet.getRange(1,2).setValues(sourceRange2)
var newRange3 = newSpreadsheet.getRange(1,3).setValues(sourceRange3)
}
}