CopyTo:如何使用谷歌应用程序脚本将数据从一个谷歌电子表格推送到另一个谷歌电子表格?

时间:2016-02-03 21:48:37

标签: google-apps-script

我寻找一种解决方案,将源电子表格中的特定单元格值从“全部”选项卡复制到另一个电子表格到“目标电子表格”选项卡“全部复制”。每当我改变Cell G10的值时它应该工作。在我输入任何G10值之前,我们会授予对目标表的访问权。

(Source Tab Name是“Sum all:G10” - Sheet有10个不同的Tabs)

(目标标签名称为“CopyData:T12” - 表格有10个不同的标签)

1 个答案:

答案 0 :(得分:1)

简单方法

使用Google Apps中的内置IMPORTRANGE()功能:

在目标单元格中​​,键入以下公式

=IMPORTRANGE("FILE_ID_HERE","Sum all!G10:G10")

此功能的语法是

=IMPORTRANGE("FILE_ID","SHEET_NAME!RANGE_START:RANGE_END")

当您第一次输入此功能时,您将在单元格中收到错误。只需单击它并选择“允许”将两张纸链接在一起。即使它是相同的电子表格,也会发生此错误。只要您具有对两者的编辑权限,此功能也可以链接两个单独的电子表格。

艰难之路

我假设您要从同一电子表格文档中复制值,但要复制到位于电子表格不同工作表上的不同单元格。 Google Apps脚本API会调用标签“工作表”和整个文档“电子表格”。

首先,打开脚本编辑器

  1. 打开您要制作此脚本的电子表格。
  2. 在工具栏中选择“工具”,然后选择“脚本编辑器”
  3. 其次,为onEdit创建一个函数。

    创建一个名为onEdit的函数将创建一个函数,该函数在每次触发edit触发器时运行,使用无授权的“简单触发器”。每次用户编辑单元格时,Google表格都会自动发送此事件。函数的参数e是触发器传递的事件。

    function onEdit(e) {
        // Get the sheet named "Sum all" from the active spreadsheet (i.e. the one you are editing)
        var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sum all");
        // Returns the active cell
        var cell = source .getActiveCell();
    
        // Compare to see if its the right cell you're looking for
        // getRow and getColumn methods return integers for the row and column of the cell
        // A = 1, B = 2, ... G = 7
        if (cell.getRow() == 10 && cell.getColumn() == 7) {
            // If its the right cell, copy to the other cell
            var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CopyData");
    
            // set the value of the desired cell in the target sheet
            target.getRange("T12").setValue(cell.getValue());
        }
    }
    

    第三,保存脚本

    保存脚本,重新加载文件并测试它。

    如果您的标签位于不同的电子表格

    更改此行:

    var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CopyData");
    

    到此:

    var target = SpreadsheetApp.openById("FILE_ID").getSheetByName("CopyData");
    

    并插入我写的FILE_ID目标电子表格的文件ID 您还需要使用“已安装的触发器”,因为简单的触发器无法打开远程电子表格。为此,请更改名称(因此它不再是简单的触发器功能)和follow the steps here