如何存储价值观和避免对此Google云端硬盘脚本执行时间限制?

时间:2014-12-23 04:39:55

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

我有权限审核Google脚本& Google Sheet准备好在脚本运行时存储输出。如何在脚本处理时将脚本保存到工作表中,同时避免执行时间限制(5或6分钟)?

Google云端硬盘我的扫描速度大于6GB,因此我认为可以提高脚本的效率,但是达到执行限制可能是不可避免的。

Google脚本:     / *       ======================================       谁可以在Google云端硬盘中查看您的文件       ======================================       Amit Agarwal撰写于2014年1月11日       教程:: http://labnol.org/?p=28237     * /

function ScanGoogleDrive() {

  var files = DriveApp.getFiles();  
  var timezone = Session.getScriptTimeZone();
  var email = Session.getActiveUser().getEmail();

  var file, date, access, url, permission;
  var privacy, view, viewers, edit, editors;

  var rows = [["File Name", "Who has access?", "Date Created"]];

  while ( files.hasNext() ) {

    file = files.next();

    try {

      access     = file.getSharingAccess();
      permission = file.getSharingPermission();
      viewers    = file.getViewers();      
      editors    = file.getEditors();

      view = [];
      edit = [];

      date =  Utilities.formatDate(file.getDateCreated(), timezone, "yyyy-MM-dd HH:mm")
      url = '<a href="' + file.getUrl() + '">' + file.getName() + '</a>';

      for (var v=0; v<viewers.length; v++) {                
        view.push(viewers[v].getName() + " " + viewers[v].getEmail());
      }

      for (var ed=0; ed<editors.length; ed++) {                
        edit.push(editors[ed].getName() + " " + editors[ed].getEmail());
      }

      switch(access) {
        case DriveApp.Access.PRIVATE:
          privacy = "Private";
          break;
        case DriveApp.Access.ANYONE:
          privacy = "Anyone";
          break;
        case DriveApp.Access.ANYONE_WITH_LINK:
          privacy = "Anyone with a link";
          break;
        case DriveApp.Access.DOMAIN:
          privacy = "Anyone inside domain";
          break;
        case DriveApp.Access.DOMAIN_WITH_LINK:
          privacy = "Anyone inside domain who has the link";
          break;
        default:
          privacy = "Unknown";
      }

      switch(permission) {
        case DriveApp.Permission.COMMENT:
          permission = "can comment";
          break;
        case DriveApp.Permission.VIEW:
          permission = "can view";
          break;
        case DriveApp.Permission.EDIT:
          permission = "can edit";
          break;
        default:
          permission = "";
      }

      view = view.join(", ");

      edit = edit.join(", ");

      privacy += (permission === "" ? "" : " " + permission) 
               + (edit === "" ? "" : ", " + edit + " can edit")
               + (view === "" ? "" : ", " + view + " can view")

      rows.push([url, privacy, date]);

    } catch (e) {Logger.log(e.toString()); Logger.log(file.getName());};

  }

  var html = "<p>File Permissions Report for Google Drive</p>";

  html += "<table><tr><td><b>" + rows[0].join("</b></td><td><b>") + "</b></td></tr>";

  for (var i=1; i<rows.length; i++) {
    html += "<tr><td>" + rows[i].join("</td><td>") + "</td></tr>";
  }

  html += "</table><br>For help, refer to this <a href='http://www.labnol.org/internet/google-drive-access/28237/'>online tutorial</a> written by <a href='http://ctrlq.org/'>Amit Agarwal</a>.";

  MailApp.sendEmail(email, "Google Drive - File Permissions Report", "", {htmlBody: html});

}

谢谢!

1 个答案:

答案 0 :(得分:0)

不幸的是,限制是由Google服务的配额设定的。所有使用任何Google服务的脚本都受此类限制的约束。您可以通过以下链接了解有关它的更多信息:https://developers.google.com/apps-script/guides/services/quotas