Просматривая различные сообщения SO (например, это) о квотах, обстоятельства настолько различны, что я не понимаю, как они применимы к веб-приложению, с которым я работаю. Вот функции этого веб-приложения, которые могут иметь отношение к квотам:
Квоты, вызывающие обеспокоенность, относятся к проекту веб-приложения и его сервисной учетной записи, а не к отдельным пользователям.
Например, если к учетной записи службы применяется ограничение в 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();
Спасибо за любые разъяснения по этому поводу.
@Tanaike Еще раз спасибо за ответ. # 2 в моем вопросе означало указать, что: выполнить от имени пользователя и получить доступ любому пользователю Gmail.
Спасибо за ответ. Я должен извиниться за мое плохое знание английского языка, снова. К сожалению, я все еще не могу понять ваш ответ. Но я хотел бы попытаться понять это. Когда я смог правильно понять это, я хотел бы думать о решении. Я был бы признателен, если бы вы могли простить мое плохое знание английского языка.
@Tanaike Спасибо за вашу готовность помочь. Ваш опыт - огромная помощь. Пожалуйста, обратите внимание на более узкий фокус, который я добавил вместе с небольшим блоком кода под заголовком БОЛЬШЕ КОНКРЕТНО в этом вопросе. Я надеюсь, что это яснее.
Спасибо за ответ. Я все еще не могу понять ваши настройки веб-приложений. Поэтому я не могу думать о вашей нынешней ситуации. Так что придется еще раз задать тот же вопрос. Могу я спросить вас о значениях Execute as:
и Who has access to the app:
в ваших развернутых веб-приложениях? Прошу прощения за это.
@Tanaike Веб-приложение настроено на: Выполнение как: «Пользователь получает доступ к веб-приложению». У кого есть доступ к приложению: «Все, у кого есть аккаунт Google». (не аноним).
Спасибо за ответ. В вашей ситуации ваши веб-приложения развертываются как Execute as: User accessing the web app
и Who has access to the app: Anyone with Google account
. И ваш текущий сценарий — это ваш сценарий показа, и вы хотите получить доступ к веб-приложениям, используя учетную запись службы. Правильно ли я понимаю? Если я правильно понимаю, можете ли вы предоставить сценарии своих веб-приложений и клиентской части?
@Tanaike Пожалуйста, ознакомьтесь с упрощенным кодом и формулировкой моего вопроса выше под заголовком «БОЛЕЕ КОНКРЕТНО». Интерфейсы на стороне клиента представляют собой html-формы в html-файлах веб-приложения. Приписывается ли выполнение UrlFetchApp с проверкой подлинности клиента службы квоте для пользователя или квоте для проекта веб-приложения? Я ожидаю, что это приписывается пользователю, когда веб-приложение выполняется от имени пользователя. Спасибо.
Итак, просто для ясности, единственная часть, которая использует учетную запись службы, — это токен при совершении вызовов? Насколько я понимаю, UrlFetchApp
тоже попадет в пользовательское исполнение.
@Emel, спасибо, что посмотрели это. UrlFetchApp подключается (чтение/запись) к электронным таблицам проекта с авторизацией под токеном служебной учетной записи, где электронные таблицы передаются на адрес Gmail служебной учетной записи. Веб-приложение выполняется от имени пользователя, что дает сценарию доступ к адресу Gmail пользователя, прошедшего проверку подлинности. Единственные разрешения, предоставленные пользователем, предназначены для userinfo.email, script.send_email и script.external_request (т. е. для функций выборки). Как вы понимаете, все эти функции скрипта попадают в квоты пользователя? Спасибо еще раз.
Я думаю, что вся необходимая вам информация находится внутри этого отвечать. Apps Script quota apply per user invoking a service.
@Emel Еще раз спасибо. Я ожидаю, что квоты применяются к учетной записи службы, а не к пользователю, поэтому 20 000 вызовов на получение URL-адресов в день являются стандартной квотой. Однако ответ, на который вы ссылаетесь, остается для меня неоднозначным, потому что неясно, использует ли вопрошающий (который отмечает, что его тестирование показывает, что квота применяется к пользователю этого приложения) учетную запись службы для вызовов.
@Emel Если вы хотите ввести свой последний комментарий в качестве ответа, я отмечу его как принятый ответ. Спасибо еще раз.
Как уже упоминалось здесь, вызовы UrlFetchApp
будут засчитываться в отношении учетной записи службы, выполняющей вызов, поскольку именно она используется для их совершения.
Все другие услуги, такие как использование SpreadsheetApp
или любой другой услуги, предлагаемой скриптом Google Apps, будут засчитываться в учетную запись пользователя, запускающего скрипт: Apps Script quota apply per user invoking a service.
.
Я должен извиниться за мое плохое знание английского языка. Могу я спросить вас о текущих настройках ваших веб-приложений? Могу я спросить вас о настройке
Execute as:
иWho has access to the app:
?