API разрешений на диске Google выдает ошибку ограничения скорости после 20 вызовов - PullRequest
1 голос
/ 31 января 2020

У меня есть сценарий, который просматривает список папок и передает право собственности с помощью API разрешений диска. Я использую это, а не боб (DriveApp.commands)? потому что мне нужно подавить уведомления по электронной почте.

Несмотря на то, что действительно должно быть нормально передавать по крайней мере 100 файлов в минуту, я получаю ошибки каждые 3–15 файлов, хотя отдельные вызовы занимают 3 секунды, чтобы скорость передачи составляет всего 20 в минуту, 40 в минуту, поскольку это, вероятно, считается двумя отдельными вызовами на файл.

//SNIPPET
  for (var i = 0; i < records.length; i++) {

    var folder = records[i]; // SPECIFIC FOLDER
    if (folder.Transferred === true) {
      //console.log(total+" That folder already transferred -"+folder.gdrive); 
      continue;
    }
    var target = folder.owner;    
    try {
        var result = passOwner(folder.gdrive, target);
      } catch (e) {
        console.log(e);
        Utilities.sleep(2000);
      }     
  } //for loop

//END OF PROBLEM CODE

function passOwner(fileId, user) {
  if (user == null) return -2;
  try {
    Drive.Permissions.insert({
      'role': 'owner',
      'type': 'user',
      'value': user
    }, fileId, {
      'sendNotificationEmails': 'false'
    });
  } catch (e) {    
    if (e.indexOf("File not found:") > -1) return -1;
    console.log("Taking a nap" + e);
    Utilities.sleep(2000);
    return -1;
  }
  try {
    DriveApp.getFileById(fileId).revokePermissions("ME@ME.com");
  } catch (e) {
    console.log(e);
    return -1;
  } 
  return 0;
}

журнал отладки с отметками времени

Jan 31, 2020, 10:34:17 AM Debug TypeError: Cannot find function indexOf in object GoogleJsonResponseException: API call to drive.permissions.insert failed with error: Rate limit exceeded. User message: "These item(s) could not be shared because a rate limit was exceeded: XXXX".
Jan 31, 2020, 10:34:18 AM Debug 88Folder transferred - 1XGOOGLEDRIVEID
Jan 31, 2020, 10:34:21 AM Debug 89Folder transferred - 1XGOOGLEDRIVEID
Jan 31, 2020, 10:34:24 AM Debug 90Folder transferred - 1XGOOGLEDRIVEID
Jan 31, 2020, 10:34:27 AM Debug 91Folder transferred - 1XGOOGLEDRIVEID
Jan 31, 2020, 10:34:30 AM Debug 92Folder transferred - 1XGOOGLEDRIVEID
Jan 31, 2020, 10:34:33 AM Debug 93Folder transferred - 1XGOOGLEDRIVEID
Jan 31, 2020, 10:34:34 AM Debug TypeError: Cannot find function indexOf in object GoogleJsonResponseException: API call to drive.permissions.insert failed with error: Rate limit exceeded. User message: "These item(s) could not be shared because a rate limit was exceeded: XXXX".

Любая идея, что Я должен сделать для устранения неполадок дальше? У меня это дремлет на 2 секунды каждый раз, когда у него есть ошибка ограничения скорости, нет никаких других очевидных применений API, происходящих в то же время. Наиболее показательно, что он начинает сбой ограничения скорости почти сразу (он получает меньше, чем 5 до первой проблемы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...