如何将 csv 数据中的动态驱动器访问权限分配给谷歌驱动器文件夹?

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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 高级服务。

参考

Range Class getValues();

Drive Advanced Service;

Drive API v2 Files:insert;

Drive API v2 Permissions:insert.

【讨论】:

感谢您的回答,尽管我解决了这个问题。如果有人想要参考,可以找到here。

以上是关于如何将 csv 数据中的动态驱动器访问权限分配给谷歌驱动器文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

将控制器操作权限动态分配给 asp.net MVC 中的角色

导出对 CSV 的访问权限

前端权限控制

如何将csv中的单词分配给变量? [复制]

如何根据 vue.js 中的自定义权限授予访问路由的权限?

设置谷歌驱动器文件访问权限“任何有链接访问权限”给出403.如何解决?