【问题标题】:Copy data from sheet to the last row of another workbook将工作表中的数据复制到另一个工作簿的最后一行
【发布时间】:2023-01-20 04:54:35
【问题描述】:

我想将列A2:K(或:工作表上除第 1 行之外的所有数据)复制到完全不同的工作簿并每次都粘贴到最后一行(这样我可以继续运行脚本并且它不会覆盖任何以前的粘贴数据)。

这是我的代码:

function dataLog() {
  var ss = SpreadsheetApp.getActive();
  var ss = ss.getSheetByName('Data Sheet');
  var target = SpreadsheetApp.openById('xxxxxx');
  var ss = target.getSheetByName("Copy Of DataInput");
  var vs = ss.getRange('A2:K').getValues();
  ss.getRange(lastRow + 1,1,vs.length,vs[0].length).setValues(vs);
}

我在第 6 行收到错误:

TypeError: Cannot read properties of null (reading 'getRange') dataLog @ Untitled.gs:6

【问题讨论】:

  • 如果this 回答了您的问题,请点击左侧的接受按钮(勾选图标)。通过这样做,社区中可能与您有同样问题的其他人将知道他们的问题可以得到解决。如果您无法使用接受按钮,请随时告诉我。 How to accept answer

标签: javascript google-apps-script google-sheets spreadsheet


【解决方案1】:

根据错误,也许您正在尝试访问不存在的工作表,这就是它返回 null 的原因。确保工作表名称 Data SheetCopy Of DataInput 拼写正确并且它确实存在于您的电子表格中。测试了脚本并进行了几次更新,它可以正常工作。您可以尝试以下操作:

function dataLog() {
  var ss = SpreadsheetApp.getActive();
  var ss = ss.getSheetByName('Data Sheet');
  var vs = ss.getRange('A2:K').getValues();

  var target = SpreadsheetApp.openById('XXX');
  var ss2 = target.getSheetByName('Copy Of DataInput');
  ss2.getRange(ss2.getLastRow() + 1,1,vs.length,vs[0].length).setValues(vs);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    相关资源
    最近更新 更多