【问题标题】:How to allot dynamic drive access permission from csv data to google drive folders?如何将 csv 数据中的动态驱动器访问权限分配给谷歌驱动器文件夹?
【发布时间】:2021-11-13 05:24:09
【问题描述】:

我有一组人的csv filefirst nameID numberemail id 数据。我想获取此信息,并在 Google Drive 父文件夹中创建名为 firstname_ID_number 的子文件夹,并将每个文件夹的访问权限设置为仅对应的电子邮件。

换句话说,列表中的每个人都应该只能访问该驱动器中自己的文件夹,而不能访问其他人的文件夹。

我的第一个想法是使用Google ColabGoogle Drive API 来完成这项工作。但我不知道如何或从哪里开始。我将不胜感激。

【问题讨论】:

    标签: csv google-drive-api google-colaboratory google-drive-shared-drive


    【解决方案1】:

    您可以先将 csv 文件导入 Google 表格,然后再使用 Apps 脚本完成任务。

    因此,假设您的工作表最终看起来类似于以下内容:

    First Name ID Number Email ID
    Name1 N1 E1
    Name2 N2 E2
    Name3 N3 E3

    您可以使用Drive 高级服务来创建文件夹并分配权限。您可以查看以下脚本以实现此目的:

    代码

    function mainFunction() {
      let spreadsheet = SpreadsheetApp.openById("SPREADSHEET_ID");
      let sheet = spreadsheet.getSheetByName("SHEET_NAME");
      let nameCol = sheet.getRange(START_ROW, START_COL, NO_ROWS, NO_COLS).getValues();
      let idCol = sheet.getRange(START_ROW, START_COL, NO_ROWS, NO_COLS).getValues();
      let emailCol = sheet.getRange(START_ROW, START_COL, NO_ROWS, NO_COLS).getValues();
    
      for (let i = 0; i < nameCol.length; i++) {
        let fileName = nameCol[i + 1][0] + "_" + idCol[i + 1][0];
        let folderId = createFolder(fileName);
        createPermission(emailCol[i + 1][0], folderId);
      }
    }
    
    function createFolder(fileName) {
      let optionalArgs = { supportsAllDrives: true };
      let resource = {
        title: fileName,
        mimeType: 'application/vnd.google-apps.folder',
        parents: [{
          "id": "SHARED_DRIVE_ID"
        }]
      }
      let folder = Drive.Files.insert(resource, null, optionalArgs);
      return folder.id;
    
    }
    
    function createPermission(emailAddress, folderId) {
      let optionalArgs = { supportsAllDrives: true };
      let resource = {
        role: "ROLE",
        type: "TYPE",
        emailAddress: emailAddress
      }
      Drive.Permissions.insert(resource, folderId);
    }
    
    

    说明

    脚本由三个函数组成:mainFunctioncreateFoldercreatePermissionmainFunction 用于收集工作表中的所有值,而createFoldercreatePermission 用于创建文件夹并为其分配必要的权限。由于您使用的是共享驱动器,因此正确的方法是使用 Drive 高级服务。

    参考

    【讨论】:

    • 感谢您的回答,尽管我解决了这个问题。如果有人想要参考,可以找到here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多