编辑谷歌工作表单元格,而不是作为使用WebApp登录的用户


  1. 有一个工作表与AB的用户共享具有写入权限。
  2. X受保护,只能由用户A编辑。
  3. 用户B应使用具有用户A权限的脚本来编辑列X

通过阅读各种文档(https://developers.google.com/apps-script/guides/services/authorization(,我了解到有两种方法可以在Google工作表上以其他用户身份运行脚本。

  1. 使用 python api(https://developers.google.com/sheets/api/quickstart/python(。缺点:要么从cmdline启动,要么从Google的App Engine启动,这不是免费的。
  2. 使用网络应用。我对那个解决方案的问题,也许这就是我所缺少的,是如何编辑带有doGetdoPost的单元格。我看到的所有示例都是使用 google 脚本来编辑单元格,这让我回到了权限问题。

一个可能的解决方案:用户 A 应使用"以我身份执行 [即 A]"设置部署 Web 应用,并选择访问级别为"任何人"[以便用户 B 可以访问]或"任何人,甚至是匿名",以节省用户 B 的额外步骤,并允许他们以编程方式访问应用。为了防止 B 以外的用户进行编辑,A 向 B 提供了一个访问令牌,B 在其 GET 或 POST 请求中使用该令牌。例如:用户 B 通过 GET 请求访问应用程序https://..../exec?key=mykey,并且应用程序具有如下代码:

function doGet(e) {
if (e.parameter.key == "mykey") {
var ss = SpreadsheetApp.openById("spreadsheet Id"); // can't use getActiveSpreadsheet in doGet/doPost
// do something with the spreadsheet
}
}

文档:doGet/doPost 事件对象。

最新更新