如何使用Google Script将我的电子表格复制到google驱动器中的特定文件夹中

时间:2013-07-02 05:16:49

标签: google-apps-script google-sheets

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

我有一个名为“审核”的电子表格,当最后一些特定的脚本运行时,我想将电子表格的副本复制到文件夹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);

   }

在这个脚本的最后,我想复制一份。

如果有人知道我该怎么做,我将不胜感激。

编辑:08/07/2013(已修复)

  • 该脚本将使用此格式(文件名+日期)
  • 制作副本
  • 该脚本会将文件保存到文件夹中。 (不会出现在根“我的司机”中)

    //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
    

2 个答案:

答案 0 :(得分:1)

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

然后

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

我认为addtofolder中没有DriveAppDocsListDriveApp中的文件对象不一样

答案 1 :(得分: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);
   ...