在为该文件的当前用户分配权限之前,我们可以使用 Google App Maker Application 和 Drive API 在 Google Drive 中创建文件吗?

Can we create a file in Google Drive using Google App Maker Application and Drive API before assigning permission to current user for that file?

场景如下:

我们在 Google App Maker 上为组织的所有用户构建了一个中央应用程序,但是,根据需要限制对不同模块的访问。

挑战在于,每当用户 'Y' 创建一个新项目时,都会在 Google 帐户拥有的 Google 驱动器中创建一个与该项目对应的新文件夹'X' 包含所有项目。

我想要的是在 X 的 Google 驱动器中创建一个文件夹,然后将 access/view/edit/add-users 的权限授予该用户 Y。但是,Y 不能访问所有X 的驱动器,但只有 his/her 项目对应的文件夹。

挑战在于所有这一切都在后端无缝发生,而不需要 X-owner 的干预。因为我的理解是 Drive Api 将适用于 App Maker 应用程序中的当前用户。我需要在任何用户登录时实现这一点,并且 X 不必手动向用户授予权限。

是的,它不应该很复杂,每当用户 Y 单击像 'Create a new project' 这样的按钮时,您应该调用一个客户端函数来处理服务器函数的调用。可以在名为 'onClick' 的按钮 属性 上调用客户端函数。 因此,在 'onClick' 输入上,您应该引用要执行的函数:NewProject();

客户端脚本

function NewProject() {
  google.script.run
    .withFailureHandler(function(error) {
    console.error(error)
  })
    .withSuccessHandler(function(result) {
    console.info(result)
  })
    .CreateFolder();
}

这个函数在客户端调用,它只调用服务器函数和returns关于它执行成功与否的信息。

服务器脚本

function CreateFolder() {
  var folder = DriveApp.createFolder(Session.getActiveUser().getEmail()+' Folder');
  folder.addEditor(Session.getActiveUser().getEmail());
  return(folder.getUrl());
}

当您在驱动器上创建文件夹时,它的访问权限是最受限的:只有驱动器帐户所有者才能访问此文件夹。

所以,在第一行,这就是我们正在做的事情:我们正在创建一个名为 'Y folder' 的文件夹,该文件夹只能由云端硬盘帐户所有者访问。

第二行adds an Editor到那个新创建的文件夹,所以我们只需要将它的邮件放在括号之间。

要使此功能如您所愿,应用程序必须 运行 作为开发者帐户,这是在应用程序设置中设置的,请注意应用程序 运行 代表开发者帐户.

这是一个总结,但希望它能阐明您可以做什么和不能做什么。

有关 AppMaker 教程,请访问:

https://developers.google.com/appmaker/tutorials