2012-05-16 3 views
0

Я хочу экспортировать свои контакты google с их группами в электронную таблицу Google, так как стандартный экспортный файл отстой. Мой набор данных не является чрезмерным (32 группы и 600 контактов). Что я делаю не так? Как я могу ограничить количество инструкций, чтобы больше не ударять эту ошибку?Превышено максимальное количество команд при экспорте 600 контактов + групп


function GetGroups() { 

    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var blad6=ss.getSheets()[6]; 
    var vId; 
    var vGroep; 
    var lijn5=2; 

    var contact = ContactsApp.getContacts(); 

    blad6.clearContents(); 
    blad6.getRange("A1").setValue("Naam"); 
    blad6.getRange("B1").setValue("Groep"); 
    blad6.getRange("C1").setValue("ID"); 

for (var i=0;i<contact.length;i++) { 
    sleep(500); 
    vId=contact[i].getId(); 
    vGroep=contact[i].getContactGroups(); 

    for (var j=0;j<vGroep.length;j++) { 
     blad6.getRange("A" + (lijn5)).setValue(contact[i].getFullName()); 
     blad6.getRange("B" + (lijn5)).setValue(vGroep[j].getName()); 
     blad6.getRange("C" + (lijn5)).setValue(vId); 
     lijn5++; 
    } 
    } 
} 

Спасибо, что разрешила большинство проблем. Тем не менее, я по-прежнему получаю ошибку Over Quota в этом разделе. Как так? Я построение массива, так же, как вы advized

function HaalGroepenOp() { 

    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var blad6=ss.getSheets()[6]; 
    var resultaat=new Array(); 

    var vId; 
    var vGroep; 
    var lijn=1; 

    var contact = ContactsApp.getContacts(); 

    blad6.clearContents(); 
    resultaat[0]=[["Naam"],["Groep"],["ID"]]; 

for (var i=0;i<contact.length;i++) { 
    vId=contact[i].getId(); 
    vGroep=contact[i].getContactGroups(); 

    for (var j=0;j<vGroep.length;j++) { 
     resultaat[lijn]=[[contact[i].getFullName()],[vGroep[j].getName()],[vId]]; 
     lijn++; 
    } 
    } 
    blad6.getRange(1,1,lijn,3).setValues(resultaat); 
} 
+0

Проверьте [Ограничения квоты] (https://docs.google.com/macros/dashboard) – ScampMichael

ответ

3

Вы делаете слишком много звонков в таблицу с SetValue для каждого отдельного элемента.

Вы должны создавать массивы, а затем присваивать массив таблице, используя setValues ​​().

blad6.getRange("A1").setValue("Naam"); 
    blad6.getRange("B1").setValue("Groep"); 
    blad6.getRange("C1").setValue("ID"); 

должно быть:

blad6.getRange("A1:C1").setValues([["Naam","Groep","ID"]]); 

Кроме того, вы должны создать массив с петлей, а затем присвоить массив в таблицу в одном пакете с использованием setValues ​​()

См Optimizing Scripts

Смежные вопросы