我想将多部手机从电子表格移至联系人,但其中一些手机没有电子邮件地址。如果我使用 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());
}}}
电子表格的结构如下:姓名,电话,电子邮件
答案 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中显示。我不知道为什么。但是记录您正在使用的数据可能是值得的。