将数据从一个电子表格复制到另一个 Google 表格

Posted

技术标签:

【中文标题】将数据从一个电子表格复制到另一个 Google 表格【英文标题】:Copying data from one spreadsheet to another Google Sheet 【发布时间】:2018-12-20 22:57:02 【问题描述】:

我一直无法将任何内容从已关闭的 Google 表格复制到打开的表格中。 这是我尝试的脚本,调试器没有通过第 2 行:

function lloydsRestore() 
    var ss =SpreadsheetApp.openById("1ZRHHA1fcXXCXwD4nCjjtIg67DHvtm5pLjmwzJiD3ZgA").getActiveSheet();
    var ls = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Lloyds');
    var values= ls.setActiveSelection("A1:T72").getvalues;

    var bs = App.getActiveSpreadsheet().getSheetByName('BS');
    var bsput = bs.getRange("A1:T72").setValues(values);

【问题讨论】:

调试器显示什么错误? ss 是做什么用的?您在第 2 行定义它,但从不使用它。哪个工作表“关闭”,哪个工作表“打开”? 【参考方案1】:

您快到了 - 只是您的脚本中存在一些误解。

您正在打开工作表 (ss),因此您使用 ss.getSheetByName(...) 而不是 SpreadsheetApp.getActiveSheet().getSheetByName(...)

您没有正确调用 getValues - 您需要 ()

function lloydsRestore() 

    var ss =SpreadsheetApp.openById('1ZRHHA1fcXXCXwD4nCjjtIg67DHvtm5pLjmwzJiD3ZgA');
    var ls = ss.getSheetByName('Lloyds');
    var values = ls.getRange('A1:T72').getValues();

    var bs = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('BS');
    var bsput = bs.getRange('A1:T72').setValues(values);

但是,您可能不需要为此编写脚本,因为 IMPORTRANGE 函数的功能与您的功能完全相同。将以下内容放入单元格中,您将导入您的值。

=IMPORTRANGE('https://docs.google.com/spreadsheets/d/1ZRHHA1fcXXCXwD4nCjjtIg67DHvtm5pLjmwzJiD3ZgA', 'Lloyds!A1:T72')

【讨论】:

现在我明白了!我避免了 importrange 方法,因为我想通过菜单包含依赖选择,但考虑到它,我可以通过将它包含在 If() 中来使导入非常依赖

以上是关于将数据从一个电子表格复制到另一个 Google 表格的主要内容,如果未能解决你的问题,请参考以下文章

Google Apps 脚本 - 将一行数据从一个电子表格移动到另一个电子表格

Google 表格/AppScript - 将数据从一张表格复制到另一张表格

将数据从一张电子表格复制到另一张电子表格

可以将行中的数据从一张纸复制到另一张纸吗?

将数据从电子表格中的列复制到另一个电子表格中的行

Google脚本将电子表格中的工作表复制到新电子表格并在特定单元格后命名新电子表格