我正在尝试写一段代码来同步两张表单(其背后的动机是here)。我从SOF得到这个代码以前的回答:当onEdit()被执行时,什么能阻止这段代码运行?
var sourceSpreadsheetID = SPREADSHEET.getId();
var sourceWorksheetName = "myData";
var destinationSpreadsheetID = "0AmEr9uNtZwnNdDFKMTVlbmZYZ3ZyOWM0aXpZS2twM1Z";
var destinationWorksheetName = "myData2";
function importData() {
var thisSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetID);
var thisWorksheet = thisSpreadsheet.getSheetByName(sourceWorksheetName);
var thisData = thisWorksheet.getDataRange();
var toSpreadsheet = SpreadsheetApp.openById(destinationSpreadsheetID);
var toWorksheet = toSpreadsheet.getSheetByName(destinationWorksheetName);
var toRange = toWorksheet.getRange(1, 1, thisData.getNumRows(),thisData.getNumColumns());
toRange.setValues(thisData.getValues());
}
function onEdit(){
importData();
}
但是当我打开表单并编辑它时,什么也没有发生。为什么?
PS - 正如我前面,我已经问过类似的问题。但是我认为这是另一个问题,因为我没有从上一个问题寻找相同的答案(如何使两张表同步?),而是一个更具体的问题:什么阻止了此代码 - 此解决方案 - 工作?
全球'SPREADSHEET'从哪里来? –
你有一个名为'onChange()'的函数,但是你没有提及你是否已经将它安装为Spreadsheet Change Trigger。你需要这样做,否则它不会运行。 – Mogsdad
嗨,@BryanP,全球'SPREADSHEET'在我的代码中定义。 是的,onChange()假设为电子表格触发器。 我也尝试了onEdit()触发器,它不起作用。 – craftApprentice