GASでGoogle連絡先の会社名&役職を取得!送付状作成②

こんにちは。ITライターのもり(@moripro3)です!GoogleAppsScriptの記事をお届けしています!

「送付状作成ツール」を題材として、GASの自動化事例をシリーズでお届けしています。

Googleサービスのひとつである「Google連絡先」の登録データをスプレッドシートに取得して、送付状の宛先欄に自動で書き込むGASツールです。

「自動化でバックオフィス革命」がモットーのオートメーションラボ株式会社では、このような流れで「送付状作成」を行っています。

送付状作成ツールの全体像2

※この連載シリーズは、GASの処理である赤枠部の範囲を紹介します。シリーズの最後で実物のツール(スプレッドシート)を公開しますので、ぜひご活用ください。

当シリーズのメイン処理は「Google連絡先のデータをスプレッドシートに取得する処理」です。

Google連絡先の取得

 

前回の記事では、Google連絡先からデータを取得する最初の一歩として、「氏名」データを取得し、ログ出力するところまでを紹介しました。

[kanren postid=”78657″]

Google連絡先の「氏名」を取得するコードがこちら。

function Sample1() {
  
  //Google連絡先から連絡先一覧を取得
  var contacts = ContactsApp.getContacts();
  
  for (var i = 0; i < contacts.length; i++) {
    
    var fullName = contacts[i].getFullName();
    Logger.log(fullName);
    
  }
}

 

スクリプト実行ログです。Google連絡先の登録件数(4件)分の氏名を出力できました。

[yy-mm-dd hh:mm:ss:xxx JST] 佐藤太郎
[yy-mm-dd hh:mm:ss:xxx JST] 田中次郎
[yy-mm-dd hh:mm:ss:xxx JST] 鈴木花子
[yy-mm-dd hh:mm:ss:xxx JST] 高橋和子

 

Google連絡先から会社名と役職を取得する

今回の記事では「Google連絡先」から「会社名」と「役職」を取得します。

Google連絡先からデータを取得するには、ひとり分の全データが含まれている「Contactオブジェクト」を操作することを、前回の記事で紹介しました。

Contactオブジェクト

今回も引き続き、この「Contactオブジェクト」からデータを取得します。

「会社名」と「役職」を取得するための重要なポイントが「会社フィールド」です。

Google連絡先の「会社フィールド」とは?

会社フィールドとは、会社データの項目の集まりです。Google連絡先の「会社」「役職」の2項目で構成されています。

Google連絡先の会社フィールド

「氏名」は、Contactオブジェクトから直接アクセスすることができましたが、

  • Contactオブジェクト → 氏名(※正確には「姓」「名」)

 

「会社名」と「役職」は、「会社フィールド」の中に存在するので、下記の順番でアクセスします。

  • Contactオブジェクト → 会社フィールド → 会社名
  • Contactオブジェクト → 会社フィールド → 役職

 

Google連絡先にサンプルデータとして4件登録しています。まずはこの4件の「会社フィールド」を取得してみます。

Google連絡先の登録データ

各連絡先の「会社フィールド」を取得する

ContactクラスのgetCompaniesメソッドで、連絡先の「会社フィールド」を取得します。

[box class=”blue_box” title=”getCompaniesメソッド”]
  • Contactオブジェクト.getCompanies()

指定の連絡先の会社フィールドを取得します。

※戻り値は、CompanyFieldクラスの配列です。

[/box]

会社フィールドを取得するコードがこちらです。

function Sample1() {
  
  //Google連絡先から連絡先一覧を取得
  var contacts = ContactsApp.getContacts();
  
  for (var i = 0; i < contacts.length; i++) {
    
    var companies = contacts[i].getCompanies();
    Logger.log(companies);
    
  }
}

 

スクリプト実行結果です。4件の連絡先それぞれについて [CompanyField] という配列が取得できたことがわかります。

[yy-mm-dd hh:mm:ss:xxx JST] [CompanyField] //←連絡先1件目の会社フィールド
[yy-mm-dd hh:mm:ss:xxx JST] [CompanyField] //←連絡先2件目の会社フィールド
[yy-mm-dd hh:mm:ss:xxx JST] [CompanyField] //←連絡先3件目の会社フィールド
[yy-mm-dd hh:mm:ss:xxx JST] [CompanyField] //←連絡先4件目の会社フィールド

 

ログでは中身がわかりませんが、ひとまず「会社フィールド」が取得できました。この「会社フィールド」の中に、「会社名」と「役職」が含まれています。

「会社フィールド」から「会社名」と「役職」を取得する

「会社フィールド」はCompanyFieldクラスのオブジェクトです(公式ドキュメントはこちら

CompanyFieldオブジェクトから「会社名」と「役職」を取得する2つのメソッドです。

[box class=”blue_box” title=”getCompanyNameメソッド・getJobTitleメソッド”]
  • CompanyFieldオブジェクト.getCompanyName()

「会社名」の文字列を取得します。

  • CompanyFieldオブジェクト.getJobTitle()

「役職」の文字列を取得します。

※「部門」を取得するメソッドは存在しません

[/box]

「会社名」と「役職」を取得するコードです。

会社情報が未登録の場合、つまり、変数 companieslength が0の場合、getCompanyNameメソッドの使用時にエラーとなるため、companies.length をチェックします。

また、CompanyFieldオブジェクトの変数 companies は配列のため、要素番号の指定が必要です。1連絡先につき1フィールドなので、1番目を表す[0]を指定します。

function Sample2() {
  
  //Google連絡先から連絡先一覧を取得
  var contacts = ContactsApp.getContacts();
  
  //連絡先の登録件数分ループする
  for (var i = 0; i < contacts.length; i++) {
    
    var companies = contacts[i].getCompanies();
    
    if (companies.length > 0) { //会社情報が未登録の場合エラーになるため
      
      //変数companiesは配列なので要素番号[0]の指定が必要
      var companyName = companies[0].getCompanyName(); //会社名
      var jobTitle = companies[0].getJobTitle(); //役職
      
      Logger.log('会社名 => %s', companyName);
      Logger.log('役職 => %s', jobTitle);
      
    }
  }
}

 

スクリプト実行結果です。連絡先4件分の「会社名」と「役職」が取得できました。「会社名」「役職」のいずれかの登録値がない場合、空白になります。

[yy-mm-dd hh:mm:ss:xxx JST] 会社名 => ABCコーポレーション
[yy-mm-dd hh:mm:ss:xxx JST] 役職 => 代表取締役
[yy-mm-dd hh:mm:ss:xxx JST] 会社名 => 田中ホールディングス
[yy-mm-dd hh:mm:ss:xxx JST] 役職 => 代表取締役社長
[yy-mm-dd hh:mm:ss:xxx JST] 会社名 => SUZUKI商事
[yy-mm-dd hh:mm:ss:xxx JST] 役職 => 係長
[yy-mm-dd hh:mm:ss:xxx JST] 会社名 => XYZカンパニー
[yy-mm-dd hh:mm:ss:xxx JST] 役職 =>

 

【まとめ】Google連絡先から氏名・会社データを取得する

今回の記事では、GASで「Google連絡先」から会社データ(会社名・役職)を取得する方法を紹介しました。

前回の記事(GASでGoogle連絡先の「氏名」を取得する)と合わせて、3項目を取得できました。

  • 氏名
  • 会社名
  • 役職

 

ここまでの処理をまとめます。Google連絡先に登録されている連絡先の「氏名」「会社名」「役職」を取得するスクリプトがこちら。

//Google連絡先に登録されている連絡先の「氏名」「会社名」「役職」を取得する
function Sample3() {
  
  //Google連絡先から連絡先一覧を取得
  var contacts = ContactsApp.getContacts();
  
  //連絡先の登録件数分ループする
  for (var i = 0; i < contacts.length; i++) {
    
    var fullName = contacts[i].getFullName(); //氏名
    Logger.log('氏名 => %s', fullName);
    
    var companies = contacts[i].getCompanies();
    
    if (companies.length > 0) { //会社情報が未登録の場合エラーになるため
      
      //変数companiesは配列なので要素番号[0]の指定が必要
      var companyName = companies[0].getCompanyName(); //会社名
      var jobTitle = companies[0].getJobTitle(); //役職
      
      Logger.log('会社名 => %s', companyName);
      Logger.log('役職 => %s', jobTitle);
      
    }
  }
}

 

スクリプト実行結果です。各連絡先について「氏名」「会社名」「役職」を取得・出力できました。

[yy-mm-dd hh:mm:ss:xxx JST] 氏名 => 佐藤太郎
[yy-mm-dd hh:mm:ss:xxx JST] 会社名 => ABCコーポレーション
[yy-mm-dd hh:mm:ss:xxx JST] 役職 => 代表取締役
[yy-mm-dd hh:mm:ss:xxx JST] 氏名 => 田中次郎
[yy-mm-dd hh:mm:ss:xxx JST] 会社名 => 田中ホールディングス
[yy-mm-dd hh:mm:ss:xxx JST] 役職 => 代表取締役社長
[yy-mm-dd hh:mm:ss:xxx JST] 氏名 => 鈴木花子
[yy-mm-dd hh:mm:ss:xxx JST] 会社名 => SUZUKI商事
[yy-mm-dd hh:mm:ss:xxx JST] 役職 => 係長
[yy-mm-dd hh:mm:ss:xxx JST] 氏名 => 高橋和子
[yy-mm-dd hh:mm:ss:xxx JST] 会社名 => XYZカンパニー
[yy-mm-dd hh:mm:ss:xxx JST] 役職 =>

 

次回は「Google連絡先から取得したデータをスプレッドシートに書き込む方法」を紹介します。これまでに取得した3項目(氏名・会社名・役職)をスプレッドシートに出力しますよ。

[kanren postid=”78747″]

 

[box class=”pink_box”]

【連載目次:GASで作る送付状作成ツール】

  1. GASでGoogle連絡先の「氏名」を取得する【送付状作成ツール①】
  2. GASでGoogle連絡先の「会社名」と「役職」を取得する【送付状作成ツール②】
  3. GASでGoogle連絡先から取得したデータをスプレッドシートに書き込む【送付状作成ツール③】
  4. GASでGoogle連絡先から「住所」を取得する【送付状作成ツール④】
  5. GASでGoogle連絡先から「メールアドレス」と「電話番号」を取得する【送付状作成ツール⑤】
  6. GASでGoogle連絡先に新規登録された連絡先のみを取得する【送付状作成ツール⑥】
  7. GASでGoogle連絡先から取得したデータを使用して送付状を作る【送付状作成ツール⑦】<※ツール公開あり>
[/box]
請求書の受け取りはsweeepで自動化

【AI請求書処理】従来の請求書OCRでは対応できない非定型帳票や

自動会計仕訳も、sweeepなら対応可能!最短で即日導入、

面倒な設定不要。手軽に導入して請求業務を効率化。