Google Apps脚本:在打开时执行功能

时间:2014-02-03 20:36:52

标签: google-apps-script google-sheets google-drive-api

我找到了一个将我的电子表格移动到文件夹的脚本。如何在电子表格打开时运行这些函数。我将这个应用到模板中,这样每次打开模板时,“Copy of”电子表格文件将自动移动到我的Packing Lists文件夹。

这是我的代码......

function MoveFileTo()  
{

    var docs=DocsList.find('Save Test'); 
    var doc=docs[0];   /*Since we assume there is only one file with the name "Hello World",  we take the index 0 */
    var folders = doc.getParents(); 
    var newFolder=DocsList.getFolder('Packing Lists');
    doc.addToFolder(newFolder); // This will add the document to its new location.
    var docParentFolder=folders[0]; 
    doc.removeFromFolder(docParentFolder); // This will remove the document from its original location. 
}

编辑:我尝试将函数MoveFileTo更改为onOpen()onEdit(),但似乎无法正常工作。有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

尝试使用driveapp而不是doclist(不推荐使用)。 impinball评论非常有用,你应该看看它 无论如何这里有一个工作代码:

function myFunction() {
  var destFolder = DriveApp.getFolderById("FOLDER_ID_WHERE8YOU_WANT_TO_MOVE_YOUR_FILES");
  var fileList = DriveApp.searchFiles("mimeType = 'application/vnd.google-apps.spreadsheet' and title contains 'FILE_TITLE'"); // change this search if necessary
  var originalFileId="THE_ID_OF_THE_ACTUAL_SPREADSHEET_TO_BE_EXCLUDED_FROM_THE_SCRIPT_TREATMENT";
  while(fileList.hasNext()){
    var fileToMove = fileList.next();
    if(fileToMove.getId()==originalFileId){
      continue; // don't do anything if it's the original file
    }
    var papas = fileToMove.getParents();
    destFolder.addFile(fileToMove); // do the job
    while(papas.hasNext()){
      papas.next().removeFile(fileToMove); // remove the actuals parents (can be more than one)
    }
  }
}