Google云端硬盘自动过期 - 同时取消共享多个文件?

时间:2016-02-18 01:52:24

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

晚上好!我是印第安纳州诺布尔斯维尔Noblesville West Middle School的8年级数学老师Aaron Ayres。最近,为了全校范围的奖励,我的学校正在使用谷歌大道分享一个"通过"授予被提名学生在提名月份期间获得奖励和其他待遇的权利。我们通常有大约80名学生每月被提名为他们的辛勤工作 - 该大楼的每位教育工作者根据多个标准每月提名一名学生。

我不是必须手动浏览我的文件夹并在月底取消共享个人通行证,而是一直在研究一种允许通行证过期的更有效方法。我遇到了Amit Argawal的自动过期脚本(http://www.labnol.org/internet/auto-expire-google-drive-links/27509/),我认为它可能有效,但它一次只能过期一个文件。有没有办法我可以修改脚本(或创建一个新脚本)来引用脚本编辑器中的多个可共享链接,以便共享访问每个学生的个人'通票在月底到期?换句话说,脚本是否有一种方法可以在相同的日期和时间过期所有80多个传递?我是Google Scripts的新手,所以我想知道我是不是正确格式化我的列表或URL引用,以便脚本识别多个文件,或者我可能会修改脚本以识别链接数组而不是单变量url链接。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我希望你掌握完整的script。请在列表中提供URL,用逗号分隔。每个学生的密码是否不同?否则,你可能只是添加了文件夹的URL而根本没有更改原始脚本。

但是,请尝试更改脚本的这些部分:

// Enter the full list of URLs(separated with comma) of the public Google Drive file or folder

var URL_LS = ["https://drive.google.com/open?id=0B_NmiOlCM-VTcFp6U1hydTM2MzVCY3AzMUpuTEtVWUhXRXNz", "https://drive.google.com/file/d/0B_NmiOlCM-VTNXFqOU1jTG5JdHJVQ3ZGUGNqZklJNWludllr/view?usp=sharing"] ;
var URL_LN = URL_LS.length;

// Enter the expiry date in YYYY-MM-DD HH:MM format 

var EXPIRY_TIME  = "2016-02-18 09:46"; 

再次,按以下方式替换autoExpire()

function autoExpire() {

  var id, asset, i, email, users;

  try {

    for (var j = 0; j < URL_LN; j++) {
    var URL = URL_LS[j];
    var id = URL.match(/[-\w]{25,}/g);

    if (id) {

      id = id[id.length-1];

      asset = DriveApp.getFileById(id) ? DriveApp.getFileById(id) : DriveApp.getFolderById(id);

      if (asset) {

        asset.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.NONE);  
        asset.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.NONE); 

        users = asset.getEditors();
        for (i in users) {
          email = users[i].getEmail();
          if (email !== "") {
            asset.removeEditor(email);
          }
        }

        users = asset.getViewers();
        for (i in users) {
          email = users[i].getEmail();
          if (email !== "") {
            asset.removeViewer(email);
          }
        }  

      }
    }
   }

  } catch (e) {

    Logger.log(e.toString());

  }
}