Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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 Sheets Formula - Fatal编程技术网

Google apps script 电子表格,用于自动扫描文件夹中的其他图纸并从特定范围导入数据

Google apps script 电子表格,用于自动扫描文件夹中的其他图纸并从特定范围导入数据,google-apps-script,google-sheets,google-sheets-formula,Google Apps Script,Google Sheets,Google Sheets Formula,我正在寻找一个脚本,我可以在google sheets电子表格中使用它来扫描包含多个电子表格(每周添加一个)的文件夹,并从每个电子表格的指定单元格范围中检索数据到新行,但在文件夹中的每一张表格中只能检索一次 我找到了这个答案: 是否可以将其修改为脚本来检查已存在的值,而不是单独检查,而是作为一个范围检查?因为某些值不可避免地是相同的,但整行不太可能是相同的。也许类似的方法可以奏效: //var fObj={nameArray:[],rangeArray:[],folderId:} functi

我正在寻找一个脚本,我可以在google sheets电子表格中使用它来扫描包含多个电子表格(每周添加一个)的文件夹,并从每个电子表格的指定单元格范围中检索数据到新行,但在文件夹中的每一张表格中只能检索一次

我找到了这个答案:


是否可以将其修改为脚本来检查已存在的值,而不是单独检查,而是作为一个范围检查?因为某些值不可避免地是相同的,但整行不太可能是相同的。

也许类似的方法可以奏效:

//var fObj={nameArray:[],rangeArray:[],folderId:}

function scanAllSpreadsheetsInAFolder(fObj) {
  var fObj=fObj || {nameArray:['Sheet1','Sheet2'],rangeArray:['A1:F100','G1:G100']};
  var ss=SpreadsheetApp.getActive();
  var msh=ss.getSheetByName('master');
  var folder=DriveApp.getFolderById(fObj.folderId);
  var files=folder.getFilesByType(MimeType.GOOGLE_SHEETS);
  while(files.hasNext()) {
    var file=files.next();
    var ss=SpreadsheetApp.openById(file.getId());
    for(var i=0;i<fObj.nameArray.length;i++) {
      var sh=ss.getSheetByName(fObj.nameArray[i]);
      for(var j=0;j<fObj.rangeArray.length;j++) {
        var rg=sh.getRange(fObj.rangeArray[j]);
        var vA=rg.getValues();
        msh.appendRow(['Spreadsheet Name','Sheet Name','Range(A1 Notation']);
        msh.appendRow([file.getName(),fObj.nameArray[i],rangeArray[j]]);
        msh.getRange(msh.getLastRow()+1,1,vA.length,vA[0].length).setValues(vA);
      }
    }                          
  }
}
//var fObj={nameArray:[],rangeArray:[],folderId:}
功能扫描所有电子表格文件夹(fObj){
var fObj=fObj |{nameArray:['Sheet1','Sheet2',rangeArray:['A1:F100','G1:G100']};
var ss=SpreadsheetApp.getActive();
var msh=ss.getSheetByName('master');
var folder=DriveApp.getFolderById(fObj.folderId);
var files=folder.getFilesByType(MimeType.GOOGLE\u SHEETS);
while(files.hasNext()){
var file=files.next();
var ss=SpreadsheetApp.openById(file.getId());

对于(var i=0;我的意思是,如果行的单个值与主数据表上的值不同,那么这一行必须放在主数据表中?因为如果是这种情况,您可以在每个范围内循环,并将行与主数据表行进行比较。是的,我想我会这样做。基本上,我想做的是每年汇总包含每周回复的电子数据表结果。所以每年都会有52个不同的电子表格,每个表格包含不同的值,但在相同的范围内。我希望这些来自相同范围的值放在主表格中,并对它们进行各种统计处理。如果我能在一年只花了一部分的时候看到结果,看到w,那将是有趣和有用的我来了。复制工作正常,所以我有源文件,但我想不出一种方法来做母版纸,将所有数字检索成一个,但文件夹中每个唯一的工作表只能检索一次!请澄清:我想不出一种方法来做母版纸,将所有数字检索成一个,但只能检索一次每个文件夹中的唯一工作表!。因为使用驱动器.Files.lis()如果你进入“资源>高级谷歌服务>驱动API”,电子表格是可能的。从那里你可以进入每个文件夹,按Id或名称获取表格,并获取范围。谢谢!我如何按Id指定文件夹?或者有没有办法指定按给定名称模板查找电子表格?这基本上是我的预设置的后续内容还有一个问题,每周将所有文件复制到一个备份文件夹中,只保留剩余函数的值,我想创建一个电子表格,收集其中的一行(每一行都相同)然后把它们列在一起,这样我就可以用它们做各种统计上的乐趣了。如果谷歌表单中默认有这样的功能,也可以,但我不知道是否有!