Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 将一张工作表复制到同一文件夹中的多张其他电子表格_Google Apps Script_Google Sheets_Google Drive Api - Fatal编程技术网

Google apps script 将一张工作表复制到同一文件夹中的多张其他电子表格

Google apps script 将一张工作表复制到同一文件夹中的多张其他电子表格,google-apps-script,google-sheets,google-drive-api,Google Apps Script,Google Sheets,Google Drive Api,我在一个文件夹中有许多电子表格,今天我在其中一个电子表格中开发了一个新的表格(选项卡)。我有一个代码来复制和粘贴一张工作表到另一个电子表格,但对于这有另一种没有代码的方法 我的目标是: 将一张表格(订单号13)复制到同一文件夹中所有其他电子表格的方法 这是我一对一复制的代码: function sendspreadsheet(){ var source = SpreadsheetApp.getActiveSpreadsheet(); var aba = source.getSheets()[

我在一个文件夹中有许多电子表格,今天我在其中一个电子表格中开发了一个新的表格(选项卡)。我有一个代码来复制和粘贴一张工作表到另一个电子表格,但对于这有另一种没有代码的方法

我的目标是:

  • 将一张表格(订单号13)复制到同一文件夹中所有其他电子表格的方法
这是我一对一复制的代码:

function sendspreadsheet(){
var source = SpreadsheetApp.getActiveSpreadsheet();
var aba = source.getSheets()[13];
var destination = SpreadsheetApp.openByUrl('https:sheetID');
aba.copyTo(destination);}
关于类似的问题,我从@Tanaike那里得到了很大的帮助:我已经研究了这段代码和谷歌的课程表,但有些东西不起作用

代码我正在尝试将一个电子表格复制到同一文件夹中的多个电子表格:

     Function sendtomultiple(){
        var source = SpreadsheetApp.getActiveSpreadsheet();
        var aba = source.getSheets()[13];
        var destination = DriveApp.getFolderById('1o6p-53Q1ntJAVIJt9w4k0UK___XXXXXX');
          var sheetDestino = destination.getFilesByType(MimeType.GOOGLE_SHEETS);
        while (sheetDestino.hasNext()) {
            SpreadsheetApp.open(sheetDestino.next()).getSheets().forEach(aba => {
              aba.copyTo(sheetDestino);          
            });
        };
       }
我猜这一行是while指令的问题,我尝试了其他选项,但它们都返回错误消息,如下所示:

Exception: The parameters (DriveApp.FileIterator) don't match the method signature for SpreadsheetApp.Sheet.copyTo.
希望有人能帮助解决此问题。

说明/问题: 您的目标是将特定工作表(选项卡)复制到同一文件夹中的多个电子表格中

  • 问题在于
    sheetDestino.next()
    是一个对象,但接受一个对象

  • 您可以创建文件的副本,然后使用获取电子表格对象,您可以使用该对象将图纸复制到其中

奖金代码:

  • 我添加了一个
    if
    条件,以确保代码不会试图将工作表复制到原始电子表格文件中

  • 我添加了一个代码,将复制到目标工作表的工作表重命名为原始名称。默认设置为图纸14的副本。

解决方案:
请记住,工作表
getSheets()[13]
是电子表格文件中的第14张工作表。如果你想得到第13张工作表,你需要使用
getSheets()[12]

哦,对不起。我现在就修。是的@Mario,在同一个文件夹中一张工作表到多张电子表格。工作正常,添加的内容很棒,特别是将复制的文件重命名为原始名称。我忘了当你复制一张纸时,它是用“原名副本”的名字创建的。非常感谢。@Ivansinigalia很高兴这对你有帮助:)
function sendtomultiple(){
    const source = SpreadsheetApp.getActiveSpreadsheet();
    const source_id = source.getId();
    const aba = source.getSheets()[13];
    const destination = DriveApp.getFolderById('1o6p-53Q1ntJAVIJt9w4k0UK___XXXXXX');
    const sheetDestino = destination.getFilesByType(MimeType.GOOGLE_SHEETS);
    while (sheetDestino.hasNext()) {
          let target_file = sheetDestino.next();
          let target_id = target_file.getId();
          let target_ss = SpreadsheetApp.openById(target_id);
          if(target_id!=source_id){
             aba.copyTo(target_ss).setName(aba.getName());          
          } 
    };
}