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 に答える