Я создаю листок Google, который переводит данные из школ на загрузку SDK администратора в Google Apps. Я знаю, что пользовательский лимит создания составляет 10 в секунду, следовательно, время задержки 120 мс. , но при раскраске каждой строки в листах, которые обрабатываются, скорость составляет около 500 мс - 2 секунды на запись. Который заставляет сценарий останавливаться на максимальном времени выполнения, потому что добавлено более 600 пользователей. Где все идет не так?Google Apps Script admin SDK speed
function UploadUsers() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("Upload");
ss.setActiveSheet(sh);
var column = sh.getRange('A1:I5000');
var values = column.getValues(); // get all data in one call
var uploadRows = 0;
while (values[uploadRows][0] != "") {
uploadRows++;
}
var i=0
var uiACU = SpreadsheetApp.getUi();
var ACUsersMessage0= "Upload Users";
var ACUsersMessage1= "Indien u op OK drukt worden er : "+ uploadRows + " Users aangemaakt! "
var result = uiACU.alert(
ACUsersMessage0,
ACUsersMessage1,
uiACU.ButtonSet.OK_CANCEL);
if (result == uiACU.Button.OK) {
for (i=0; i<uploadRows;i++){
var uniqueId=[i][0];
var mailAdress=values[i][3];
var voorNaam=values[i][1];
var achterNaam=values[i][2];
var Ou=values[i][8];
var Pass=values[i][4];
Utilities.sleep(12);
AdminDirectory.Users.insert ({
"kind": "admin#directory#user",
"password" : Pass,
"primaryEmail": mailAdress,
"orgUnitPath": Ou,
"changePasswordAtNextLogin": "TRUE",
"name": {
"givenName": voorNaam,
"familyName": achterNaam,
},
"externalIds": [
{
"value": uniqueId,
"type": "account",
"customType": "gappsUniqueId"
}
]
})
ss.getRange("D"+ (i+1)).setBackground("red")
}
} else {
//Full Stop
}
}
красная краска была просто добавлена для иллюстрации, чтобы увидеть, где произошло время ожидания и как быстро запускались admindirectory.users. , когда я вызываю другую функцию в этой функции, у нее будет еще 6 минут (5 для сохранения), или это общая продолжительность сценария «мастер», ограниченная 6 минутами (например, сделать отдельную функцию с 1-249 250 -499 и т. Д.) И просто вызывать этот скрипт с возвратом пару раз? –
Каждый запуск функции имеет ограничение в 6 минут, после этого он сбрасывается, но даже GDE не знают точно, сколько времени у него есть, поэтому мы будем играть в безопасном режиме и двигаться с задержкой 6 минут. Я обновлю исходный ответ о том, как запустить новый funciton снова, это на самом деле то же самое, но он возвращает строку, начинающуюся с сервиса свойств. – Kriggs
@RichardvanderPlas Там, извините за ленивый код, сейчас у вас мало времени. – Kriggs