【发布时间】:2021-02-21 10:35:25
【问题描述】:
我有一个将行从一张纸复制到另一张纸的功能,当我手动运行它时它可以工作:
function updateDataRange() {
var formSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var lastFormRow = formSheet.getLastRow();
var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DataRange");
dataSheet.clear();
for(var rowCounter = 1; rowCounter <= lastFormRow; rowCounter++) {
var sourceRange = formSheet.getRange('B'+rowCounter+':H'+rowCounter);
var insertRow = dataSheet.getLastRow() + 1;
var targetRange = dataSheet.getRange('A'+insertRow);
sourceRange.copyTo(targetRange);
}
}
但是,当我通过触发器(例如 function onEdit(e) { updateDateRange(); } )运行它时,行中会出现间隙,并且某些值将被遗漏。在这种情况下,我知道通过使用rowCounter 而不是insertRow 来写入文件而不是使用getLastRow() 来“修复”,但是人们可以很容易地看到在另一种情况下这是一个问题。
所以我想我的问题很简单:为什么在使用触发器时不能正常工作?
编辑:为了澄清,我有第三张表,其中包含一些条件/单元格(即影响要复制哪些行的条件)并更改它们(例如更改不同的日期)会触发该功能.
【问题讨论】:
标签: google-apps-script google-sheets