导出600个联系人+组时超出最大指令数

时间:2012-05-16 13:44:49

标签: google-apps-script google-contacts

由于标准导出文件很糟糕,我想将我的Google联系人与他们的群组导出到Google电子表格中。我的数据集并不过多(32个组和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错误。怎么会?我正在构建一个数组,正如你所说的那样

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);
}

1 个答案:

答案 0 :(得分: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