Веб-приложение, выполняемое учетной записью пользователя: как применяются квоты для выполнения UrlFetchApp учетной записью службы?

Просматривая различные сообщения SO (например, это) о квотах, обстоятельства настолько различны, что я не понимаю, как они применимы к веб-приложению, с которым я работаю. Вот функции этого веб-приложения, которые могут иметь отношение к квотам:

  1. Веб-приложение находится в учетной записи «[email protected]».
  2. Веб-приложение запускается под пользователем, с доступом для любого пользователя Gmail.
  3. Разрешения для проекта веб-приложения: userinfo.email; скрипт.внешний_запрос; и script.send_mail.
  4. Чтение и запись в электронные таблицы Google выполняются учетной записью службы проекта с помощью выполнения UrlFetchApp, где электронные таблицы совместно используются учетной записью службы.
  5. Разрешения для учетной записи службы: электронные таблицы и script.external_request.

Квоты, вызывающие обеспокоенность, относятся к проекту веб-приложения и его сервисной учетной записи, а не к отдельным пользователям.

Например, если к учетной записи службы применяется ограничение в 30 одновременных запусков, то это может быть большой проблемой, поскольку, безусловно, может быть более 30 пользователей, одновременно запускающих выполнения (включая UrlFetch, выполняемый учетной записью службы). Или квоты применяются отдельно к каждому «экземпляру» сервисного аккаунта для каждого пользователя?

Итак, основной вопрос: какие квоты будут применяться к проекту или к совокупным действиям его сервисного аккаунта от имени всех пользователей?

КОНКРЕТНО

При выполнении веб-приложения от имени пользователя и доступе из любой учетной записи Gmail выполняется ли выполнение следующего кода (в соответствии с политиками квот службы Google) для пользовательские квоты или для веб-приложения квоты проектного/служебного аккаунта?

 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();

Спасибо за любые разъяснения по этому поводу.


70
1

Ответ:

Решено

Как уже упоминалось здесь, вызовы UrlFetchApp будут засчитываться в отношении учетной записи службы, выполняющей вызов, поскольку именно она используется для их совершения.

Все другие услуги, такие как использование SpreadsheetApp или любой другой услуги, предлагаемой скриптом Google Apps, будут засчитываться в учетную запись пользователя, запускающего скрипт: Apps Script quota apply per user invoking a service..