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");
}
formatDate は Dateオブジェクト を期待します。
文字列を渡すと 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の誤用を検知したサイン です。
- 文法は合っている
- 関数も存在する
- でも「渡し方」が間違っている
この視点でコードを見直すと、
原因は意外とすぐ見つかります。