Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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
Javascript 复制google drive文件夹中每个工作簿中的所有工作表_Javascript_Google Apps Script - Fatal编程技术网

Javascript 复制google drive文件夹中每个工作簿中的所有工作表

Javascript 复制google drive文件夹中每个工作簿中的所有工作表,javascript,google-apps-script,Javascript,Google Apps Script,我想要一个谷歌脚本,它将循环通过我的谷歌驱动器文件夹中的每个工作簿(电子表格),然后将其中的每个工作表复制到我自己的工作表中。我已经有了一个脚本,但它设置为只复制第一张工作表,我们可以让它循环复制电子表格中的所有工作表吗 我试图改变索引,但它只会拉一张纸 function getDataToMaster() { var folder = DriveApp.getFolderById("******************"); //Define id of folder var cont

我想要一个谷歌脚本,它将循环通过我的谷歌驱动器文件夹中的每个工作簿(电子表格),然后将其中的每个工作表复制到我自己的工作表中。我已经有了一个脚本,但它设置为只复制第一张工作表,我们可以让它循环复制电子表格中的所有工作表吗

我试图改变索引,但它只会拉一张纸

function getDataToMaster() {
  var folder = DriveApp.getFolderById("******************"); //Define id of folder
  var contents = folder.getFiles();
  var file; 
  var data;
  var sheetMaster = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; //first sheet of the file, change by getSheetByName("NAME") if you want
  while(contents.hasNext()){  
    file = contents.next();
    if (file.getMimeType() == "application/vnd.google-apps.spreadsheet") {
      var sheet = SpreadsheetApp.openById(file.getId()).getSheets()[0];//first sheet of the file, change by getSheetByName("NAME") if you want
      var startRow = 1; 
      var data = sheet.getDataRange().getValues();
      var colToCheck = 7;
      for(var j = 0; j < data.length;j++){
        if(data[j][colToCheck-1] != "copied"){
          sheetMaster.appendRow(data[j]);
          sheet.getRange((j+1), colToCheck).setValue("copied");
          SpreadsheetApp.flush();
        }
      }
    } 
  }
}
函数getDataToMaster(){ var folder=DriveApp.getFolderById(“*******************”);//定义文件夹的id var contents=folder.getFiles(); var文件; var数据; var sheetMaster=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];//如果需要,请按getSheetByName(“名称”)更改文件的第一页 while(contents.hasNext()){ file=contents.next(); if(file.getMimeType()=“application/vnd.google apps.spreadsheet”){ var sheet=SpreadsheetApp.openById(file.getId()).getSheets()[0];//如果需要,请按getSheetByName(“名称”)更改文件的第一页 var startRow=1; var data=sheet.getDataRange().getValues(); var-colToCheck=7; 对于(var j=0;j如果您在
if
语句下面添加
for
循环,它应该可以正常工作

    if (file.getMimeType() == "application/vnd.google-apps.spreadsheet") {
      var sheetCount = SpreadsheetApp.openById(file.getId()).getNumSheets();
      for(var k = 0; k < sheetCount; k++){
        var sheet = SpreadsheetApp.openById(file.getId()).getSheets()[k];//iterates through each sheet in the file
        var startRow = 1; 
        var data = sheet.getDataRange().getValues();
        var colToCheck = 7;
        for(var j = 0; j < data.length;j++){
          if(data[j][colToCheck-1] != "copied"){
            sheetMaster.appendRow(data[j]);
            sheet.getRange((j+1), colToCheck).setValue("copied");
            SpreadsheetApp.flush();
          }
        }
      }
    }
if(file.getMimeType()=“application/vnd.google apps.spreadsheet”){
var sheetCount=SpreadsheetApp.openById(file.getId()).getNumSheets();
对于(变量k=0;k

getSheets()[Integer]
的工作原理是,它获取具有提供的匹配索引号的工作表。电子表格中的第一张表是索引0,第二张是1,第三张是2,依此类推。此循环只获取有多少张工作表,并遍历执行您为每个工作表编写的操作的索引。

Spreadsheet.getSheets()
返回可以迭代的工作表数组

建议:当您知道将迭代数组中的每个元素时(即,您不想通过
中断
返回
来终止循环),然后尝试
数组.prototype.forEach
,因为它减少了需要设置的变量数量。以下是我将如何使用
forEach
两次重写您的
getDataToMaster
函数:

函数getDataToMaster(){code> var folder=DriveApp.getFolderById(“*******************”); var contents=folder.getFiles(); var sheetMaster=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; while(contents.hasNext()){ var file=contents.next(); if(file.getMimeType()!==“application/vnd.google apps.spreadsheet”){ 继续; } SpreadsheetApp.openById(file.getId()).getSheets() .forEach(功能表){ var-colToCheck=7; sheet.getDataRange().getValues() .forEach(函数(行,索引){ 如果(行[colToCheck-1]!=“已复制”){ 活页纸。世界其他地区(世界其他地区); sheet.getRange(索引+1,colToCheck).setValue(“复制”); SpreadsheetApp.flush(); } }); }); } }