首页 > 解决方案 > 将新文件添加到谷歌驱动器时自动更新谷歌电子表格

问题描述

当新文件添加到某个谷歌驱动器文件夹时,我需要更新谷歌电子表格。

它需要拉取“姓名”、“日期”和“网址链接”等数据。

我读过一些谷歌工作表脚本不会让你添加“新文件”作为事件,所以我必须每 30 分钟运行一次,这没有问题;我不能做的是清除电子表格并创建一个新电子表格,因为内容很多,并且用谷歌驱动器中的所有数据填充电子表格大约需要 10 分钟。

这是我用来创建电子表格的脚本

function listFolders(folder) {
     var sheet = SpreadsheetApp.getActiveSheet();
     sheet.appendRow(["Name", "Sharing Access", "Sharing Permission", "Get Editors", "Get Viewers", "Date", "Size", "URL", "Download", "Description", "Type"]); //writes the headers
     var folder = DriveApp.getFolderById("YOUR_FOLDER_ID");//that long chunk of random numbers/letters in the URL when you navigate to the folder

     var files = folder.getFiles();//initial loop on loose files w/in the folder

     var cnt = 0;
     var file;

     while (files.hasNext()) {
         var file = files.next();
         var listEditors = file.getEditors(); //gets the editor email(s), doesn't show your own as it's assumed
         var editors = [];
         for (var cnt = 0; cnt < listEditors.length; cnt++) {
             editors.push(listEditors[cnt].getEmail());
             Logger.log(editors);
         };
         var listViewers = file.getViewers(); //gets the viewer email(s)
         var viewers = [];
         for (var cnt = 0; cnt < listViewers.length; cnt++) {
             viewers.push(listViewers[cnt].getEmail());
             Logger.log(viewers);
         }
         cnt++;  //data chunk pushes all the file info to the ss

         data = [
             file.getName(),
             file.getSharingAccess(),
             file.getSharingPermission(),
             editors.toString(),
             viewers.toString(),
             file.getDateCreated(),
             file.getSize(),
             file.getUrl(),
             "https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
             file.getDescription(),
             file.getMimeType(),
         ];

         sheet.appendRow(data);

     };


     var subfolders = folder.getFolders(); //same thing as above but for all the subfolders in the folder

     while (subfolders.hasNext()) {
         //Logger.log(folder);
         var name = subfolders.next();

         var files = name.getFiles();

         var cnt = 0;
         var file;

         while (files.hasNext()) {
             var file = files.next();
             var listEditors = file.getEditors();
             var editors = [];
             for (var cnt = 0; cnt < listEditors.length; cnt++) {
                 editors.push(listEditors[cnt].getEmail());
                 Logger.log(editors);
             };
             var listViewers = file.getViewers();
             var viewers = [];
             for (var cnt = 0; cnt < listViewers.length; cnt++) {
                 viewers.push(listViewers[cnt].getEmail());
                 Logger.log(viewers);
             }
             cnt++;

             data = [
                 file.getName(),
                 file.getSharingAccess(),
                 file.getSharingPermission(),
                 editors.toString(),
                 viewers.toString(),
                 file.getDateCreated(),
                 file.getSize(),
                 file.getUrl(),
                 "https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
                 file.getDescription(),
                 file.getMimeType(),
             ];
             sheet.appendRow(data);
         };
     }
 }

提前致谢。

标签: databasegoogle-apps-scriptgoogle-drive-apinew-operatorupdating

解决方案


推荐阅读