見出し画像

【GAS】Google Apps Script 活用事例 ContactsAppを使用して、直近で連絡を取った人の名前とメールアドレスを取得するスクリプト

社内でも関わり合いのない人のメールアドレスは取得出来ないッ!!

function getContacts() {
  const contacts  = ContactsApp.getContacts();
  const newValues = [];
  console.log(contacts);

  for (const contact of contacts) {

    newValues.push([contact.getEmailAddresses()[0], contact.getFullName()]);

    //Nohara Shinnosuke野原しんのすけ → 野原しんのすけ
    //上記のように英字のみを削除する正規表現(※会社名が英語表記だと消えてしまうため、コメントアウトしています。)
    //newValues.push([contact.getEmailAddresses()[0], contact.getFullName().replace(/[0-9a-zA-Z\s]+/,'')]);
  }
  console.log(newValues);
}

上記のスクリプトだと、少なくとも1度は、メールを送受信したことがあったり、Google Workspace環境下では、ミーティングに同席したことがある方のメールアドレスのみを取得できるようです。

つまり、普段から関わり合いのない人は社内であっても、メールアドレスを取得出来ないようです。痒いところに手が届かない。

名前からメールアドレスを取得する

function getEmailAddress() {
  const contacts = ContactsApp.getContactsByName('野比のび太')[0].getEmailAddresses()[0];
  console.log(contacts);
}

自分が過去に連絡とったり、ミーティングに参加したことがある場合には
上記のスクリプトでメールアドレスを取得出来ます。

今回は、新卒入社をした学生の3ヶ月後面談、6ヶ月後面談といった予定を登録する際に名前からメアド取れないかなーと思ったのですが、無理ぽでした。

カレンダー登録用にイベント名を人数分生成する

function setEventName(){
 const sheet    = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート名');
 const template = {
   title : '【人自×新卒】配属{month}か月後面談'
 }
 const array  = ['2', '4', '6'];
 const values = [];
 let count    = 1;

 for(let i = 0; i < array.length; i++){
   for(let j = 0; j < 23; j++){
     const eventName = template.title.replace('{month}', array[i]);
     values.push([count, eventName]);
     count += 1;
   }
   count = 1;
 }
 console.log(values);
 sheet.getRange(2, 1, values.length, values[0].length).setValues(values);
}

数式でもイベント名の生成をやってやれないことはないのですが....スクリプトで出来る方が楽ちんですね!!

こちらのスクリプトも便利です。

やはり、この時もContactsAppでメールアドレスを取得しようとして上手くいかなかった記憶があります。


この記事が気に入ったらサポートをしてみませんか?