GASの「Cannot read property ‘xxx’ of null」エラー — nullとundefinedの違いから解決まで

この記事の内容について、業務や開発でお困りの場合は個別に対応できます。

GASの「Cannot read property 'xxx' of null」エラー — nullとundefinedの違いから解決まで

GASのnullエラーガイド

このエラーは、Google Apps Script (GAS) で非常によく見かける実行時エラーの1つです:TypeError: Cannot read property 'xxx' of null

前回のundefinedエラーに見た目は似ていますが、原因とデバッグアプローチは異なります。この違いを理解することが、安定したGAS開発には不可欠です。


「TypeError: Cannot read property 'xxx' of null」ってどういう意味?

このエラーは、あなたのコードが null という値にプロパティをアクセスしようとするときに発生します。JavaScriptでは null は「意図的に値がない」を意味し、undefined は「割り当てられていない、または見つからない」を意味します。GASでは、APIやサービスがリソースは概念的に存在するが値がない場面で null を返すことが多くあります。


GASでこのエラーを引き起こすコード例

スプレッドシートのセルが空の場合

function sampleNullSheet() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const cell = sheet.getRange("A1").getValue();
  Logger.log(cell.value);
}

セルが空の場合、getValue()null を返します。cell.value にアクセスしようとするとエラーが発生します。


サポートされていない環境での getActiveUser()

function sampleNullUser() {
  const user = Session.getActiveUser();
  Logger.log(user.getEmail());
}

コンシューマーアカウントや特定の実行環境では、getActiveUser()null を返すことがあり、エラーが発生します。


HtmlServiceで見つからない要素

function sampleHtml() {
  const element = null;
  Logger.log(element.id);
}

予期されたDOM要素が存在しないか読み込みに失敗した場合に発生することが多くあります。


DriveApp でファイルが見つからない

function sampleDrive() {
  const files = DriveApp.getFilesByName("nonexistent.txt");
  const file = files.hasNext() ? files.next() : null;
  Logger.log(file.getId());
}

ファイルがマッチしない場合、filenull になり、そのプロパティにアクセスするとエラーが発生します。


GAS がよく null を返す理由

GASのサービスは、多くの場面で意図的に null を返します:

  • スプレッドシートの空のセル
  • 見つからないドライブファイルやフォルダ
  • 利用できないユーザーコンテキスト
  • オプション設定値

この設計は、開発者が「値がない」シナリオを明示的に処理することを強制します。


このエラーを防ぐ方法

明示的なnullチェック

if (file !== null) {
  Logger.log(file.getId());
}

防御的なデフォルト値

const safeName = file ? file.getName() : "";

オプショナルチェーニング(対応している場合)

Logger.log(file?.getId());

オプショナルチェーニングは null を有効なオブジェクトに変換するのではなく、実行時エラーを防ぐだけであることに注意してください。


null と undefined の主な違い

意味 GASでの典型的な出典
undefined 割り当てられていない / 見つからない 配列、オブジェクト、find()
null 意図的に値がない スプレッドシート、ドライブ、Session API

この違いを理解することで、適切なガード戦略を選択できます。


結論

「TypeError: Cannot read property 'xxx' of null」は、あなたのスクリプトがGASサービスから明示的な「値がない」を受け取り、それを有効なオブジェクトとして扱おうとしたことを示しています。

null がどこから来るのかを認識し、適切なチェックを追加することで、Google Apps Scriptの本番環境での障害を大幅に減らすことができます。

ZIDOOKA!

この記事の内容について、対応できます

この記事に関連する技術トラブルや開発上の問題について個別対応を行っています。

個別対応は3,000円〜 内容・工数により事前にお見積りします
最後までお読みいただきありがとうございました

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

AI活用に関するポリシー

当サイトでは、記事の執筆補助にAIを活用する場合がありますが、全面的な委任は行いません。