1

我想将几部手机从电子表格移动到联系人,但其中几部没有电子邮件地址。如果我使用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());
    }}}​

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

4

1 回答 1

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 中。我不确定为什么。但是记录您正在使用的数据可能是值得的。

于 2013-03-12T19:58:32.793 回答