我试图在两个谷歌电子表格之间创建一些内容的双向同步。
我的脚本在以下情况下正在运行:
所以,这个工作:
function myFunction() {
var sourceSpreadsheet = SpreadsheetApp.openById("ID-OF-ACTIVE-SPREADSHEET");
var destinationSpreadsheet = SpreadsheetApp.openById("ID-OF-ACTIVE-SPREADSHEET");
var sourceSheet = sourceSpreadsheet.getSheetByName("sheet1");
var destinationSheet = destinationSpreadsheet.getSheetByName("sheet2");
var sourceRange = sourceSheet.getRange("A1:A4");
// destination, columnStart, columnEnd, rowStart, rowEnd
sourceRange.copyValuesToRange(destinationSheet, 2, 2, 3, 7);
}
但是当我用另一个电子表格的ID替换目标ID时,它不起作用。它可能与权限有关吗?我试图发布两个电子表格。
这就是' T:
...
var sourceSpreadsheet = SpreadsheetApp.openById("ID-OF-ACTIVE-SPREADSHEET");
var destinationSpreadsheet = SpreadsheetApp.openById("ID-OF-ANOTHER-SPREADSHEET");
...
由于我尝试创建双向同步,我不认为我可以使用IMPORTRANGE
答案 0 :(得分:1)
似乎copyValuesToRange不在电子表格之外进行通信,这是一个可行的解决方案:
function onChange() {
var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var sourceData = sourceSpreadsheet.getRange("A1:A8").getValues();
var targetSpreadsheet = SpreadsheetApp.openById("ID-OF-ANOTHER-SPREADSHEET").getSheetByName("Sheet1");
targetSpreadsheet.getRange("A1:A8").setValues(sourceData);
}
PS:这也可以实现电子表格之间的双向同步,只需在电子表格A和B上添加此代码的副本,并将“ID-OF-ANTHER-SPREADSHEET”替换为另一个电子表格的ID。然后定义from-和to范围代替“A1:A8”。