OAuth2.createService вызывает к PropertiesService слишком долго, иногда - PullRequest
1 голос
/ 27 января 2020

Использование OAuth2 Library 1.35.0 и Gmail API V1 (https://www.googleapis.com/gmail/v1/users/userId/settings/delegates) в скрипте Google Apps для получения делегатов почтового ящика, и я получаю некоторые странные ответы в частности, из вызовов PropertiesService.Properties.setProperty и PropertiesService.Properties.deleteProperty с использованием:

scope = 'https://www.googleapis.com/auth/gmail.settings.basic'; email = 'delegator@domain.com';

function getOAuthService(email,scope) {
  return OAuth2.createService("gmail")
  .setTokenUrl('https://accounts.google.com/o/oauth2/token')
  .setPrivateKey(OAUTH2_SERVICE_ACCOUNT_PRIVATE_KEY)
  .setIssuer(OAUTH2_SERVICE_ACCOUNT_CLIENT_EMAIL)
  .setSubject(email)
  .setPropertyStore(PropertiesService.getScriptProperties())
  .setParam('access_type', 'offline')
  .setScope(scope);
}

При выполнении сценария для одного почтового ящика общее время выполнения составляет 0,783 секунды. Выполнение того же сценария для 20 почтовых ящиков приводит к общему времени выполнения 67,203 секунды, и единственной заметной причиной является следующие вызовы: PropertiesService.Properties.deleteProperty ([oauth2.gmail]) [9.062 секунд] PropertiesService.Properties.setProperty ([oauth2.gmail, access_token: ”…”) [11.086 секунд] PropertiesService.Properties.deleteProperty ([oauth2. gmail]) [7,061 секунд] PropertiesService.Properties.setProperty ([oauth2.gmail, access_token: ”…”) [9,089 секунд] PropertiesService.Properties.deleteProperty ([oauth2.gmail]) [9,052 секунд] PropertiesService.Properties.setProperty ( [oauth2.gmail, access_token: ”…”) [9.087 секунд]

Из общего времени выполнения 67.203 секунд 54.437 секунд занято 6 вышеуказанными вызовами. В общей сложности 80 вызовов PropertiesService.Properties. (получить / установить / удалить), а остальные (74) из них выполняются в общей сложности 3,972 секунды со средним значением менее 0,06 каждый.

Это тестовый запуск для подмножества данных, и когда я запустите это для всех данных, время ожидания моего сценария. 60 почтовых ящиков занимают 239,716 секунд

Как ни странно, у меня не возникает та же проблема при запуске с

scope = 'https://www.googleapis.com/auth/gmail.readonly'; API: https://www.googleapis.com/gmail/v1/users/userId/messages и https://www.googleapis.com/gmail/v1/users/userId/messages/id

Любой совет?

...