用户帐户执行的 Webapp:服务帐户如何为 UrlFetchApp 执行应用配额?
Webapp executed by user account: How are quotas applied for UrlFetchApp executions by service account?
查看有关配额的各种 SO 帖子(例如 this),情况千差万别,我不清楚它们如何应用于我正在使用的 webapp。以下是此 Web 应用程序可能会影响配额的功能:
- Web 应用程序位于“消费者--@gmail.com”帐户中。
- 网络应用在用户下运行,任何 Gmail 用户都可以访问。
- webapp 项目的权限是:userinfo.email; script.external_request;和 script.send_mail.
- Read/writes 到 Google 电子表格由项目服务帐户通过 UrlFetchApp 执行执行,其中电子表格与服务帐户共享。
- 服务帐户的权限是:电子表格和 script.external_request。
关注的配额是那些适用于 webapp 项目及其服务帐户的配额,而不是那些适用于个人用户的配额。
例如,如果 30 个同时执行的限制适用于服务帐户,那么这可能是一个大问题,因为肯定可以有超过 30 个用户同时启动执行(包括由服务帐户执行的 UrlFetch)。或者配额是否分别应用于每个用户的服务帐户的每个“实例”?
那么,基本问题是:哪些配额将应用于项目或其服务帐户代表所有用户的累积操作?
更具体地说
以用户身份执行 webapp 并通过任何 Gmail 帐户访问,执行以下代码(根据 Google 服务配额策略)是否分配给 用户的配额 或到 webapp project/service account quotas?
var clientToken = //Service account's oAuth authentication token
var urlSheet = `https://docs.google.com/spreadsheets/d/${ssID}/gviz/tq?tqx=out:json&gid=${sheetId}&tq=${encodeURI(query)}`;
var res = UrlFetchApp.fetch(urlSheet, {"method": "get", headers: {authorization: "Bearer " + clientToken}}).getContentText();
感谢您对此的任何澄清。
如前所述 ,UrlFetchApp
调用将计入调用的服务帐户,因为这是用于调用的服务帐户。
所有其他服务,例如使用 SpreadsheetApp
或 Google Apps 脚本提供的任何其他服务,将计入用户帐户 运行 脚本:Apps Script quota apply per user invoking a service.
.
查看有关配额的各种 SO 帖子(例如 this),情况千差万别,我不清楚它们如何应用于我正在使用的 webapp。以下是此 Web 应用程序可能会影响配额的功能:
- Web 应用程序位于“消费者--@gmail.com”帐户中。
- 网络应用在用户下运行,任何 Gmail 用户都可以访问。
- webapp 项目的权限是:userinfo.email; script.external_request;和 script.send_mail.
- Read/writes 到 Google 电子表格由项目服务帐户通过 UrlFetchApp 执行执行,其中电子表格与服务帐户共享。
- 服务帐户的权限是:电子表格和 script.external_request。
关注的配额是那些适用于 webapp 项目及其服务帐户的配额,而不是那些适用于个人用户的配额。
例如,如果 30 个同时执行的限制适用于服务帐户,那么这可能是一个大问题,因为肯定可以有超过 30 个用户同时启动执行(包括由服务帐户执行的 UrlFetch)。或者配额是否分别应用于每个用户的服务帐户的每个“实例”?
那么,基本问题是:哪些配额将应用于项目或其服务帐户代表所有用户的累积操作?
更具体地说
以用户身份执行 webapp 并通过任何 Gmail 帐户访问,执行以下代码(根据 Google 服务配额策略)是否分配给 用户的配额 或到 webapp project/service account quotas?
var clientToken = //Service account's oAuth authentication token
var urlSheet = `https://docs.google.com/spreadsheets/d/${ssID}/gviz/tq?tqx=out:json&gid=${sheetId}&tq=${encodeURI(query)}`;
var res = UrlFetchApp.fetch(urlSheet, {"method": "get", headers: {authorization: "Bearer " + clientToken}}).getContentText();
感谢您对此的任何澄清。
如前所述 UrlFetchApp
调用将计入调用的服务帐户,因为这是用于调用的服务帐户。
所有其他服务,例如使用 SpreadsheetApp
或 Google Apps 脚本提供的任何其他服务,将计入用户帐户 运行 脚本:Apps Script quota apply per user invoking a service.
.