Exception: Invalid argument が起きるGASコードと対処法

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

Google Apps Script(GAS)で開発していると、
比較的よく見るのに原因が分かりづらい エラーが
「Exception: Invalid argument」 です。

TypeError や ReferenceError と違い、
このエラーは「文法」ではなく APIの使い方ミス が原因で出ることが多く、
初心者だけでなく実務でも頻繁に遭遇します。

この記事では、

  • Exception: Invalid argument とは何か
  • 実際にエラーが出るGASコード例
  • なぜGASで頻発するのか
  • 実務での防ぎ方

を整理します。


Exception: Invalid argument とは何か

このエラーは直訳すると
「無効な引数が渡された」 という意味です。

つまり、

関数自体は存在しているが、
その関数が期待していない値・型・形式を渡している

場合に発生します。

GASでは特に、

  • SpreadsheetApp
  • DriveApp
  • Utilities
  • UrlFetchApp

など、Google提供APIの引数チェックでよく出ます。


実際にエラーが発生するGASコード例

スプレッドシートの Range 指定ミス

function sampleRange() {
  const sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(0, 1); // 行・列は1始まり
}

getRange(row, column)1始まり です。
0 を渡すと Invalid argument になります。


空文字・null を Range に渡している

function sampleRangeString() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const rangeName = "";
  sheet.getRange(rangeName);
}

Range名が空文字のため、
GAS側で「無効な引数」と判定されます。


日付・数値を期待する引数に文字列を渡している

function sampleDate() {
  const date = "2025-12-16";
  Utilities.formatDate(date, "Asia/Tokyo", "yyyy/MM/dd");
}

formatDateDateオブジェクト を期待します。
文字列を渡すと Invalid argument になります。

少し違いますが、同系統のエラーですね。


DriveApp で存在しないIDを指定

function sampleDrive() {
  DriveApp.getFileById("dummy-id");
}

形式的には文字列ですが、
実体のないIDは「無効な引数」として扱われます。


setValue / setValues の型不一致

function sampleSetValues() {
  const sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange("A1:B2").setValues([1, 2, 3]);
}

setValues二次元配列 が必須です。
一次元配列を渡すと Invalid argument が発生します。


なぜGASでこのエラーが頻発するのか

GASでは、次の特徴がエラーを生みやすくしています。

  • 引数の型エラーが事前に分からない
  • 実行時までエラーが出ない
  • エラーメッセージが抽象的
  • APIごとに「許される引数」が厳密

特に、

値は入っているから大丈夫

という思い込みが、このエラーの最大原因です。


防ぐための基本的な書き方

引数の型と中身を明示的にチェックする

if (!rangeName) return;
if (!(date instanceof Date)) return;

APIドキュメント通りの型を渡す

const date = new Date("2025-12-16");
Utilities.formatDate(date, "Asia/Tokyo", "yyyy/MM/dd");

setValues は必ず二次元配列

sheet.getRange("A1:B2").setValues([
  [1, 2],
  [3, 4]
]);

ログで引数を疑う癖をつける

Logger.log(typeof value);
Logger.log(value);

Invalid argument は
「値そのもの」より「形」 を疑うのが近道です。


実務でのチェックポイント

  • null / undefined / 空文字が混ざっていないか
  • 配列の次元が合っているか
  • Date / Number / String の型が正しいか
  • IDやRange名が実在しているか

これらを確認するだけで、
Invalid argument の大半は解消できます。


まとめ

「Exception: Invalid argument」は、
GASが APIの誤用を検知したサイン です。

  • 文法は合っている
  • 関数も存在する
  • でも「渡し方」が間違っている

この視点でコードを見直すと、
原因は意外とすぐ見つかります。

ZIDOOKA!

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

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

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

コメントを残す

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

AI活用に関するポリシー

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