2012-05-16 28 views
0

由於標準導出文件很糟糕,我想將我的谷歌聯繫人及其羣組導出到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++; 
    } 
    } 
} 

謝謝,已經解決了大部分問題。不過,我仍然在本部分收到超額配額錯誤。怎麼來的?我構建一個數組,就如同你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