需要将行从一个谷歌电子表格移动到完全不同的谷歌电子表格

时间:2015-07-07 01:45:18

标签: google-apps-script google-sheets

我正在尝试将一行电子表格中的一行移到基于单元格的完全不同的电子表格中。我有一个脚本,如果工作表在同一个文件但不是两个不同的文件,我可以工作。第一个文件是由表单响应创建的,另一个文件是我手动创建的电子表格。这是我的剧本:

function onEdit() {
 var sheetNameToWatch = "Form Responses 1";
 var columnNumberToWatch = 11;
 var valueToWatch = "Y";
 var sheetNameToMoveTheRowTo = "Completed Repairs";
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var ts = SpreadsheetApp.openById("1VpSqsR_zBU6FhEfVW5QJi2-oAvVhxnxSQmoINz_J5-Y");
 var sheet = SpreadsheetApp.getActiveSheet();
 var range = sheet.getActiveCell();

 if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
   var targetSheet = ts.getSheetByName(sheetNameToMoveTheRowTo);
   var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
   sheet.getRange(range.getRow(), 1, 1,sheet.getLastColumn()).copyTo(targetRange);
   sheet.deleteRow(range.getRow());
 }
}

1 个答案:

答案 0 :(得分:2)

您看到此错误Execution failed: You do not have permission to perform that action.,因为您无法从onEdit()函数调用内置Google服务(openById)。

简单触发器以限制身份验证模式运行,不允许打开其他电子表格。您可以创建一个可安装的触发器(details in that help page)来运行完全身份验证的onEdit脚本。

检查此page以获取有关简单触发器和触发器限制的更多详细信息。

希望有所帮助!