在 Google 电子表格中运行脚本时出现权限错误

raz*_*mas 7 google-sheets google-apps-script google-drive-api google-cloud-iam

我们正在开发一个使用 Google 电子表格作为输入的程序。电子表格的值被读取、处理,结果显示在网页中。

当用户注册时,我们使用服务帐户从模板克隆电子表格。该模板有一些我们想用来帮助用户在电子表格中引入值的脚本。

但是脚本似乎拥有服务帐户的所有者,并且根据 Google 属于服务帐户的脚本无法执行。

错误信息是:

Google Apps 脚本:无法运行脚本,因为它归服务帐户所有。请在运行前将项目复制或转移到有效帐户。

我们将电子表格的所有权从服务帐户转移给了 gmail 用户,如果该用户创建了一个脚本,它可以完美运行,但从模板继承的脚本似乎仍然拥有服务帐户的所有者,因此无法执行。

我的问题是......我如何将项目(脚本)的所有权从服务帐户转移到另一个用户?

我用谷歌搜索并在开发者谷歌电子表格网站上搜索,但找不到答案

Cle*_*ter 0

截至今天的简短回答:

curl --request POST \
  'https://www.googleapis.com/drive/v3/files/1_AVYCjzIATBg2OmK6CzgXXy8hB-GsLxoIKCHEqyndhs/permissions?emailMessage=[NEW_OWNER_EMAIL]&sendNotificationEmail=true&transferOwnership=true&alt=json&key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"role":"owner","type":"user","emailAddress":[NEW_OWNER_EMAIL]}' \
  --compressed
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • NEW_OWNER_EMAIL:新所有者的电子邮件
  • YOUR_ACCESS_TOKEN:当前所有者(服务帐户)的访问令牌
    • 使用Python(我的项目是Python)我做了:
curl --request POST \
  'https://www.googleapis.com/drive/v3/files/1_AVYCjzIATBg2OmK6CzgXXy8hB-GsLxoIKCHEqyndhs/permissions?emailMessage=[NEW_OWNER_EMAIL]&sendNotificationEmail=true&transferOwnership=true&alt=json&key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"role":"owner","type":"user","emailAddress":[NEW_OWNER_EMAIL]}' \
  --compressed
Run Code Online (Sandbox Code Playgroud)
  • YOUR_API_KEY:您可以从 GCP Api 和服务部分 Ids 生成的 API 密钥