getFullNameでNullエラーが出る、空白取得する場合の対処方法 – Google Apps Script

GASのgetFullNameであるあるなあのエラー。

氏名を取得するgetFullNameメソッドですが、使っているとNullエラーが出たり空白や想定とは違う名前が取得されることが多々あります。姓を取得するgetFamilyNamegetメソッドや下の名前を取得するgetGiveNameメソッドも同様。

今回はこうしたGoogle Apps ScriptのgetFullNameでNullエラーが出たり空白を取得する、氏名の表示がおかしいなどうまくいかない場合の対処方法を解説。結論からいえば、

  • Gmailで自分自身にメールを送って開封(お手軽)
  • それでダメならGoogle連絡帳を編集(確実)

で直るはずです。

本記事ではスクリプト利用者自身の名前を取得するケースを前提で話を進めています。

が、ほかの人の名前を取得したい場合でもエラーの原因は一緒なので、本記事で紹介した方法の応用で直せるはず。

(例:自分自身にメールではなく、取得したい人からスクリプト作業者にメールを送る、など)

想定されるケース&エラー

getFullNameメソッドでNullエラーが発生した画面
Nullエラーの例。

本記事で想定しているエラー、現象は下記。

  • Nullエラー(画像のような赤いエラー表示)
  • 空白の状態で取得される
  • 予期しない名前で表示される、Googleアカウントに設定した氏名と違う

ちなみにNullエラーの場合はこのようなエラーが出ます。上記画像がエラーが出た画面の例です。

「TypeError: Cannot read property 'getFullName’ of null」

下記順番でお試しいただければ直る。はず。

解消方法1:Gmailで自分自身に空メール(お手軽)

  • Gmailで自分自身へ空メールを送り開封する
  • メールを送る前にGoogleアカウントの氏名欄を設定しておくとベスト

Gmailでスクリプト作業者自身にメールを送り、Gmail上で開封してください。空メールで構いません。開封までは不要なこともありますが、しておいた方が確実。

事前にGoogleアカウント設定上の氏名欄を確認 → 設定おくのがベストですが、やらなくても大丈夫。解消方法2で確実に直せるので必須ではありません。サクッとメールしてみてダメなら解消方法2にいくのでもOK。

スクリプト作業者自身の以外の氏名取得でエラーが出る場合は、取得したいアカウントからスクリプト作業者のGmailへメールを送ってもらって開封すればOK。

この方法では特にNullエラーが出るとにこうかはばつぐんだ。ほか、名前が空白になる場合でもこれで直ったりします。ただ、Googleアカウントに設定した氏名と違う状態で取得される場合はこの方法では直らないかも。

Gmailでダメだった場合は解消方法2をお試しください。

解消方法2:Google連絡帳を編集(確実)

  • Google連絡先上で氏名を設定する
  • 連絡先、その他の連絡先両方をチェックすべし

Google Apps Scriptで取得したいGoogleアカウントの氏名をGoogle連絡帳上で設定します。この方法が一番確実。

Google連絡帳の「連絡先」「その他の連絡先」をチェックする
「連絡先」「その他の連絡先」両方をチェックし、目当てのアカウントの氏名を編集する。

まずGoogle連絡帳にログイン。

左メニューにある「連絡先」or「その他の連絡先」をクリック

続いて氏名を取得したいGoogleアカウント鉛筆マークをクリックします。例えば自分自身の名前を取得したいのにエラーが出る場合は自分自身のアカウント(Gmailメアドなど)を見つけましょう。

鉛筆マークからアカウントの設定画面へ
名前横にある鉛筆マークから編集可能。

選択したアカウントの連絡先情報が表示されるので、名前の横にある鉛筆マークをクリック

あとは氏名を設定して保存すればオッケー。

解消方法1でメールを送っていれば「連絡先」か「その他の連絡先」のどちらかには登録されているはずですが、どちらにもないようなら手作業で連絡先に新規登録すればOK。

Googleアカウント=メールアドレスと紐づくので、氏名とメールアドレスを登録すればOKです。

Google連絡帳上に設定が済めば、割りとすぐにでもスクリプト側で氏名が取得できるようになるはず。

なお、ひとつのアカウントが「連絡先」と「その他の連絡先」両方に登録されている可能性もあります。

片方を直してももう一方の氏名がおかしな状態だとGoogle Apps Scriptでうまく氏名を取得できない可能性があるので、両方チェックして設定しておくが吉。

もろもろ解説

getFullNameメソッドで氏名を取得する際、ContactsAppクラスを使っているかと思います。ContactsApp.getContact()とか。

この場合、getFullNameメソッドはGoogleアカウントの氏名ではなくGoogle連絡帳上に登録されているアカウント情報から氏名を取得しようとしているのです。

NullエラーはGoogle連絡帳に登録されていないアカウントの氏名を取得しようとしたのが原因。

また、空白や正常ではない状態で取得されるのは、Google連絡帳にその状態で登録されているのが原因。

なので、Google連絡帳の「連絡先」と「その他の連絡先」上に正しく設定することでエラーを回避できるわけです。

ちなみに、解消方法1で自分自身のGmailに(あるいは氏名を取得したいアカウントから)メールを送るのはGmailでメールを受信することでGoogle連絡帳へ登録するため。

Google連絡帳に登録されていない人からGmailで受信した場合、自動でその人の氏名とアカウントがGoogle連絡帳へ登録される挙動を利用しています。

(そのため、解消方法1を先に試してほしい次第でした)

Gmail受信で初回登録される氏名はGoogleアカウントで登録している名前。なので、Googleアカウントの氏名をちゃんと設定してからメールを送った方がいいわけですね。

しかし、すでにGoogle連絡帳に登録されている場合は特に上書きはされない模様。なので、間違った情報でGoogle連絡帳にすでに登録されている場合、Googleアカウントの氏名を直してメールしても無駄だったり。

そういう場合は直接Google連絡帳で氏名を修正するしかないようです。

まとめ:getFullNameでNullエラーや空白取得が起きる場合の対処方法

  • getFullNameメソッドでNullエラーや空白取得など正常に氏名を取得できない場合、Google連絡帳の登録に問題がある。
  • Nullエラーの場合はGmailでメールを受信することでGoogle連絡帳に登録すればOK
  • それ以外の場合はGoogle連絡帳に登録するか、登録してある場合は氏名部分を修正することで対応可能

本当にGoogle連絡帳から氏名を取得したい場合はしょうがないんですが、そもそもGoogle Apps Scriptに「自身のアカウント設定にある氏名を取得」する方法がないのが厄介なんですよね。メールアドレスは取得できるんですが。

Google様なんとかしてくださいよろしくお願いします。

(Google連絡帳以外からメソッドあるよ! とかありましたらぜひご教授くださいよろしくお願いします)