如何使用谷歌脚本将细节表复制到另一个电子表格

时间:2013-06-14 00:48:29

标签: google-apps-script google-sheets

情况:

我有一个包含10个工作表和15个用户登录并修改它的电子表格。我想从其他电子表格中复制6张。

需要的脚本功能:

脚本应该是复制表到另一个特定的电子表格。

1) 来源= XXXXXX 我想从Source只复制sheet1,2,3,4,5,6,7,8到目标。 目标= YYYYY

注意:目标已经有了Sheet1,2,3,4,5,6,7,8。我需要更新目标电子表格,因为我使用它来制作报告。我不能使用这个报告,因为这份报告是保密的。

2) 该脚本需要从目标运行。

问题:

我阅读了很多论坛,但是有人提供了一个关于“如何将表格复制到其他表格”的通用脚本。所有这些剧本都是非常复杂的,我是新手。

测试用例:

N / A

我认为是从一个电子表格到另一个电子表格的简单的工作表副本但我需要在oneshot中执行此操作实际上我手动执行此操作但是我已经发出系统将工作表名称更改为XXXXX的副本但我的报告配置为使用特定的名称,这就是我需要的原因。我认为这个剧本会对很多人有所帮助。

先谢谢。

编辑:2013年6月14日

您好,

请您帮助我调整此脚本以提高工作效率。

    function UpdateData() {
     var source = SpreadsheetApp.openById('YYYYYY');
     var sheet8 = source.getSheets()[8];
     var sheet7 = source.getSheets()[7];
     var sheet6 = source.getSheets()[6];
     var sheet5 = source.getSheets()[5];
     var sheet4 = source.getSheets()[4];
     var sheet3 = source.getSheets()[3];
     var sheet2 = source.getSheets()[2];
     var sheet1 = source.getSheets()[1];

     var destination = SpreadsheetApp.openById('ZZZZZZ');

     sheet8.copyTo(destination).setName('Sheet8');
     sheet7.copyTo(destination).setName('Sheet7');
     Utilities.sleep(100);
     sheet6.copyTo(destination).setName('Sheet6');
     sheet5.copyTo(destination).setName('Sheet5');
     Utilities.sleep(100);
     sheet4.copyTo(destination).setName('Shee4');
     sheet3.copyTo(destination).setName('Shee3');
     Utilities.sleep(100);
     sheet2.copyTo(destination).setName('Shee2');
     sheet1.copyTo(destination).setName('Shee1');

      SpreadsheetApp.flush();
    }

1 个答案:

答案 0 :(得分:9)

从描述中查看文档:{​​{3}}:

  

将工作表复制到另一个电子表格。目标电子表格   可以是来源。新电子表格的名称为“Copy of   [原始电子表格名称]“

该方法会重复复制的工作表,以便您重命名:

sourceSheet.copyTo(targetSpreadSheet).setName('somename');

我希望,你知道如何在JS中编写循环...