首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅在文件存在时“复制到工作表”

如何仅在文件存在时“复制到工作表”
EN

Stack Overflow用户
提问于 2019-11-16 17:43:20
回答 1查看 104关注 0票数 0

因此,我的问题是,我有一个脚本,可以将一组独立的单页google电子表格作为选项卡复制到一个主电子表格中,但由于我使用的是“标题包含”,所以它为不存在的电子表格创建了工作表(选项卡)(在下面的示例中:它将制作"ADC午餐“,即使该表不存在)。我有大约50个这样的脚本,怎样才能确保只有实际的电子表格文件与其名称相对应,才能在我的主电子表格中存在?我当时想的可能是一个"if然后“,比如IF(ID=true,sheet.copyTo(目的地).setName(”ADC早餐“)),但是我还没有太多的api脚本经验,所以我不知道如何围绕这个函数来表述它。任何帮助都将不胜感激,谢谢。

说明:

  1. “电子表格1”
  2. “电子表格2”->已编译->主电子表格(有3张表格)
  3. “电子表格3”

问题:

主电子表格通过“标题包含”搜索电子表格X,如果它找不到一个具有特定要求的电子表格,它只是将另一个电子表格作为电子表格X复制到主电子表格中。如果主电子表格实际存在并满足“标题包含”参数,那么如何使它只复制电子表格到主电子表格(作为选项卡)?我希望这能澄清一些事情,很抱歉我的描述很差。

代码语言:javascript
复制
function ArrayBuilder() {
    var filesource = DriveApp.searchFiles('title contains "ADC Breakfast" and parents in "File_ID"');
    while(filesource.hasNext()){
        var File = filesource.next();
        var ID = File.getId();
    }
    var name = File.getName()
    var source = SpreadsheetApp.openById(ID);
    var sheet = source.getSheets()[0];
    var destinationID = "File_ID";
    var destination = SpreadsheetApp.openById(destinationID);

     sheet.copyTo(destination).setName("ADC Breakfast"); 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-17 00:42:10

查找只有一个工作表的电子表格

我知道这不是你问题的答案,但也许它会帮助你从另一个角度去思考它。此函数查找只有一个工作表的电子表格,并将文件名、文件id和工作表名称附加到电子表格中。它还向文件名添加了一个扩展名,如(n),其中n是一个整数,指示有多少文件具有该名称。使用电子表格中的信息,您可能会知道哪些是您想要复制到您的主电子表格中,或者如果您希望帮助修改它,请告诉我。

代码语言:javascript
复制
function findSpreadsheetsWithOnlyOneSheet() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('File Data Sheet');
  var nA=[];
  var nObj={};
  var files=DriveApp.getFolderById('Folder Id').getFilesByType(MimeType.GOOGLE_SHEETS);
  while(files.hasNext()) {
    var file=files.next();
    var id=file.getId();
    var name=file.getName();
    if(Sheets.Spreadsheets.get(id).sheets.length==1) {
      var sheetname=Sheets.Spreadsheets.get(file.getId()).sheets[0].properties.title;
      if(nA) {
        if(nA.indexOf(name)==-1) {
          nA.push(name);
          sh.appendRow([name,id,sheetname]);
        }else{
          if(nObj.hasOwnProperty(name)) {
            nObj[name]+=1;
          }else{
            nObj[name]=1;
          }
          sh.appendRow([name + '(' + nObj[name] + ')',id,sheetname])
        }
      }else{
        sh.appendRow([name,id,sheetname]);
      }
    }
  }
}

这就是我的电子表格的样子:

工作表API第4版

DriveApp类

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58893488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档