在没有电子邮件地址的情

时间:2013-02-07 16:58:12

标签: google-apps-script

我想将多部手机从电子表格移至联系人,但其中一些手机没有电子邮件地址。如果我使用 getContactsByName 它会返回一个我无法写入的数组。也许有一种方法可以使用 getContactbyId

这是我目前使用的脚本:

function updateContacts() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();  
  for (var i = 0; i < sheet.getLastRow()-1; i++) {
    var contactEmail = sheet.getRange(i+2, 3, 1, 1).getValue();
    var myContact = ContactsApp.getContact(contactEmail);
    var group = ContactsApp.getContactGroup("System Group: My Contacts");    

    if (myContact == null){
      group.addContact(ContactsApp.createContact(sheet.getRange(i+2, 1, 1, 1).getValue(), 
                                sheet.getRange(i+2, 1, 1, 1).getValue(), 
                                sheet.getRange(i+2, 3, 1, 1).getValue()));
      var contact = ContactsApp.getContactsByName(sheet.getRange(i+2, 1, 1, 1).getValue());
      contact[1].setPhone(sheet.getRange(i+2, 2, 1, 1).getValue());
    }}}​

电子表格的结构如下:姓名,电话,电子邮件

1 个答案:

答案 0 :(得分:2)

您使用未定义的方法添加电话号码。它是addPhone(label, number)而非setPhone(number)

这是我使用的测试功能。电子邮件和号码都添加没有问题。

function myFunction() {
  var contacts = ContactsApp.getContacts();

  contacts.forEach(function(contact, i){
    Logger.log("contacts[" + i + "] =" + contact.getFullName());
  });
  contacts[14].addEmail("test", "delete@me.later");


  var contactsByName = ContactsApp.getContactsByName("Ada");

  contactsByName.forEach(function(contact, i){
    Logger.log("contactsByName[" + i + "] =" + contact.getFullName());
  });
  contactsByName[0].addPhone("test", 123456789);
}

注意:当我使用ContactsApp.getContacts();时,返回数组中的前13个联系人为空。它们甚至没有在Gmail中显示。我不知道为什么。但是记录您正在使用的数据可能是值得的。