1

我有以下脚本,当运行结束时,我想将该电子表格的副本复制到具有名称 + 日期的特定文件夹中,例如:

我有一个名为“Audit”的电子表格,当最后运行一些特定的脚本时,我想将电子表格的副本复制到文件夹 root/Audit/Historic 到谷歌驱动程序或谷歌文档中。

注意:root 是 google 驱动程序或 google docs 顶级文件夹。

脚本:

  function ShellCopyValues(){
        var sheets = ['sheet1','sheet2','sheet3','sheet4','sheet4'];
        for (var s in sheets){
        CopyRows(sheets[s]);
      }
  }

  function CopyRows(uname) {
   var source = SpreadsheetApp.openById('XXXXXX');
   var sourcesheet = source.getSheetByName(uname);

   var target = SpreadsheetApp.openById('YYYYYY');
   var targetsheet = target.getSheetByName(uname);
   var targetrange = targetsheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
   var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
   targetrange.setValues(rangeValues);

   }

在这个脚本的结尾,我想复制一份。

如果有人对我该怎么做有任何想法,我将不胜感激。

编辑:2013 年 8 月 7 日(固定)

  • 该脚本将使用这种格式(文件名+日期)进行复制
  • 该脚本会将文件保存到一个文件夹中。(不会出现在根目录“我的驱动程序”中)

    //This part make a copy of the spreadsheet
    var SSID = 'XXXXXX'
    var CopyDate = Utilities.formatDate(new Date(), "GMT-3", "ddMMyyyyHHmm"); // Function Date + Format
    var folder = DocsList.getFolder('Historic'); //Use this line if you want to get the folder by name
    //--> var folder = DocsList.getFileById('YYYYY'); //Use this line if you want to get the folder by ID
    var backup = DocsList.getFileById(SSID).makeCopy(SpreadsheetApp.openById(SSID).getName() + "_" + CopyDate);
    backup.addToFolder(folder); //This line will be move the folder
    backup.removeFromFolder(DocsList.getRootFolder()); //This line is needed to remove the Filde from the Root
    
4

2 回答 2

1

使用DriveApp... 使用getFileById(id)然后使用获取文件makeCopy(name)

然后

使用DocsList... 使用getFileById(id)然后使用获取文件addToFolder(folder)

我不认为有一个addtofolderinDriveApp和文件对象 inDocsListDriveApp不一样

于 2013-07-02T07:28:33.120 回答
0

特别使用addToFolder(parent)removeFromFolder(parent)getParents()

尝试:

   ...
   var folder = DocsList.getFolder('Historic');
   var backup = DocsList.getFileById(SSID).makeCopy(SpreadsheetApp.openById(SSID).getName() + "_" + CopyDate);
   var deleteFromFolder = backup.getParents()[0];
   backup.addToFolder(folder);
   backup.removeFromFolder(deleteFromFolder);
   ...
于 2013-07-02T11:28:08.843 回答