仅在文件存在的情况下如何“复制到工作表”

时间:2019-11-16 17:43:20

标签: google-apps-script google-sheets

这是我的问题,我有一个脚本可以将一堆独立的单张Google电子表格复制为一个主电子表格作为标签,但是由于我使用的是“标题包含”,因此它会创建表格(标签),用于不存在的电子表格(在以下示例中:即使该工作表不存在,它也会显示“ ADC Lunch”)。我的脚本中大约有50个,什么是确保我的主电子表格中仅存在具有与其名称相对应的实际电子表格文件的工作表的最佳方法?我当时在想像IF(ID = true,sheet.copyTo(destination).setName(“ ADC Breakfast”))这样的“ if then”,但我对api脚本的了解还不多,所以我不知道如何围绕此功能制定它。任何帮助,将不胜感激,谢谢。

插图:

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

问题:

主电子表格通过“标题包含”搜索来搜索电子表格X,如果找不到具有特定要求的电子表格之一,它仅将另一个足够接近的电子表格复制为电子表格X作为电子表格X。我做到了,如果它确实存在并且满足“标题包含”参数,它将仅将电子表格复制到主电子表格(作为选项卡)?我希望这可以澄清一些问题,对不起我的描述。

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"); 

1 个答案:

答案 0 :(得分:1)

查找只有一张纸的电子表格

我知道这不是您问题的答案,但也许它将帮助您以另一种方式思考。此函数查找仅包含1个工作表的电子表格,并将文件名,文件ID和工作表名称附加到电子表格中。它还为文件名添加了扩展名,例如(n),其中n是整数,指示有多少个文件使用该名称。利用电子表格中的信息,您可能可以找出要复制到主电子表格中的信息,或者如果您希望在修改电子表格时获得帮助,请告诉我。

int main(){
    boost::numeric::ublas::matrix<double> value(3,3);
    value(0,0) = 1;
    value(1,1) = 2;
    value(2,2) = 3;
    matrixBoost valueWrap(value);

    boost::numeric::ublas::vector<double> v(3);
    v(0) = 1;
    v(1) = 1;
    v(2) = 1;
    cout<<vectorBoost::solve(valueWrap,vectorBoost(v))<<endl;

    cout<<valueWrap<<endl;

    matrixBoost newMatrix = valueWrap.block(1,1,2,2);
    cout<<newMatrix<<endl;
    cout<<valueWrap.block(1,1,2,2)<<endl;

    valueWrap.block(1,1,2,2) = 
        valueWrap.block(1,1,2,2)*newMatrix + newMatrix;
    cout<<valueWrap<<endl;
}

这是我的电子表格的外观:

enter image description here

Sheets API version 4

DriveApp Class