7

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

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

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

错误信息是:

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

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

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

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

4

1 回答 1

0

截至今天的简短回答:

  • 在这里查看文档
  • 发出 POST 请求,如下所示:
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

在哪里:

  • NEW_OWNER_EMAIL: 新所有者的电子邮件
  • YOUR_ACCESS_TOKEN:当前所有者(服务帐户)的访问令牌
    • 使用python(我的项目在python中)我做了:
import json
from oauth2client.service_account import ServiceAccountCredentials

json_secret = json.load(open("client-secret.json"))
scope = ["https://www.googleapis.com/auth/drive"]
credentials = ServiceAccountCredentials.from_json_keyfile_dict(json_secret, scope)
token = credentials.get_access_token()[0]
print(token)
  • YOUR_API_KEY:您可以从 GCP Api 和服务部分 Ids 生成的 API 密钥
于 2021-09-04T08:08:44.023 回答