0

我想将我的 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);
}
4

1 回答 1

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() 将数组分批分配给电子表格

请参阅优化脚本

于 2012-05-16T16:56:22.097 回答