在最终用户的帐户上创建 Google Sheet

Creating a Google Sheet on the end-user's account

几天前,我写了一个app,它创建了用于测量坑洼的扩展sheet。昨天,有人在我面前测试了那个应用程序,从我所看到的,除了其他错误,用户得到了一些 "access request" 屏幕。几个小时后,我转到我帐户上的 Google 表格,发现应用程序生成的 sheet 放在了我的帐户上,而不是他们的帐户上。我转到 Gmail,收到一封电子邮件,说他们正在请求访问传播sheet。

我如何在他们的帐户下创建它或确保他们自动拥有访问权限和编辑权限?

有两种选择:

(a) 部署应用时,将参数"Execute the app as"设置为"User accessing the web app"。然后,无论应用程序做什么,都将在该用户的授权下进行,特别是他们将拥有该应用程序创建的任何电子表格。

(b) 以您(开发者)的身份执行网络应用程序,但通过 addEditor 方法将用户添加为编辑者。一个直接的尝试是

function doGet() {
  var ss = SpreadsheetApp.create("new spreadsheet");
  var user = Session.getActiveUser();
  ss.addEditor(user);
  return HtmlService.createHtmlOutput("<h1>Success!</h1>");
}

如果开发者和用户都在同一个 G Suite 域中,这应该有效。但通常它不会工作,因为应用程序无权知道用户的身份:请参阅 documentation

一种解决方法是要求用户输入他们的电子邮件地址(在您的表单中添加另一个字段以收集它),然后将他们添加为使用它的编辑者。

  ss.addEditor(email);