远程写到另一个googlesheet

问题描述 投票:0回答:1

我具有下面从其他地方复制的功能。它基本上将您已经完成的行移动到同一文件中的另一张纸上(从纸原点移动到目标,触发器为“移动”)。

我想实现的是,能够将已完成的行移动到另一个Google工作表文件,而不是同一文件中的另一个工作表。我已经尝试了SpreadsheetApp.openByUrl和SpreadsheetApp.openByID,但是什么也没有发生,我期待一些权限请求等,但是什么也没有,甚至没有错误。有人可以帮我弄这个吗?

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Origin" && r.getColumn() == 10 && r.getValue() == "Move") {

    var row = r.getRow();
    var numColumns = s.getLastColumn();

    var targetSheet = ss.getSheetByName("Target");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, (numColumns-1)).moveTo(target);
    s.deleteRow(row);

  }
google-sheets-api
1个回答
0
投票

我相信您的目标如下。

  • 您要将s.getRange(row, 1, 1, (numColumns-1))的值复制到其他电子表格中Target工作表的最后一行。
  • 您想通过OnEdit事件触发器运行脚本。

为此,这个答案如何?

修改点:

  • 为了使用SpreadsheetApp.openByUrlSpreadsheetApp.openByID,需要使用可安装的OnEdit事件触发器,而不是简单的OnEdit事件触发器。当使用简单触发器运行SpreadsheetApp.openByUrlSpreadsheetApp.openByID时,会发生与权限有关的错误。
    • 我认为是您的问题的原因。
  • 将值移动到其他电子表格时,无法使用move()。因此,在这种情况下,将使用getValuessetValues

当上述几点反映到您的脚本时,它将变成如下。

修改的脚本:

请复制并粘贴以下脚本。并且,please install the OnEdit event trigger to the function of installedOnEdit as the installable trigger。这样,在编辑单元格时,将运行installedOnEdit

SpreadsheetApp.openById

参考:

  • function installedOnEdit(event) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet(); var r = event.source.getActiveRange(); if(s.getName() == "Sheet1" && r.getColumn() == 10 && r.getValue() == "Move") { var id = "###"; // Please set the Spreadsheet ID. var dst = SpreadsheetApp.openById(id); var targetSheet = dst.getSheetByName("Sheet2"); var row = r.getRow(); var numColumns = s.getLastColumn(); var srcRange = s.getRange(row, 1, 1, (numColumns-1)); s.deleteRow(row); targetSheet.getRange(targetSheet.getLastRow() + 1, 1, 1, numColumns - 1).setValues(srcRange.getValues()); } }
  • Simple Triggers
© www.soinside.com 2019 - 2024. All rights reserved.