У меня есть сценарий, который просматривает список папок и передает право собственности с помощью 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 до первой проблемы).