Google Apps Script を書いていると、コードは合っている“つもり”なのに、突然 SyntaxError: Unexpected identifier が出て止まることがあります。
このエラーは「文法が途中で壊れたとき」に必ず出ますが、実際にはチェックすべきポイントがいくつかに絞られています。ここでは、初心者でもすぐに原因にたどり着けるよう、確認すべき場所と直し方をコンパクトに整理します。
■ 1. カンマ・括弧・波括弧の抜けをチェックする
最も多い原因が 構文の途中抜け です。
よくある例
const obj = {
name: "Taro"
age: 20 // ← カンマ抜け
};
これだけで Unexpected identifier が発生します。
チェックポイント
- オブジェクト
{}の中の カンマ - 配列
[]の カンマ - 関数の
()の閉じ忘れ - if / for / function の
{}の閉じ忘れ
GAS は括弧が1つ欠けただけでもこのエラーを返します。
■ 2. テンプレートリテラル内のバッククォート抜け
バッククォート(`)を使った文字列でのミスも頻発します。
const text = `Hello ${name}; // ← 最後の`抜け
バッククォートが閉じていないと、以降すべてが「予期しない識別子」扱いになります。
■ 3. let / const の重複・途中宣言の崩れ
意外と多いのが宣言のミス。
let name = "Taro"
let age = 20 // セミコロン抜けで次の行が誤解釈されるケースもある
また、同じ変数名を const で二度宣言 すると構文エラーになります。
■ 4. コピペしたコードに全角スペースが混在している
StackOverflow や Qiita からコピーしたコードに
隠れ全角スペース が入っていると、GAS は識別子として認識します。
const name = "Taro"; // ← 「const」と「name」の間が全角
■ 5. import など未サポート構文を使っている
GAS では import / export / require など ESModules 構文が基本使えません。
import { func } from './utils.js';
これも「Unexpected identifier」につながります。
■ 6. 直し方の最短ルート(実務で使っている手順)
私が GAS 開発案件で実際にやっている流れです。
- エラーの行番号を見る(ただし1つ前の行が真犯人のことが多い)
- カンマ・括弧・バッククォートの抜けをチェック
- 該当箇所を 一度削除 → 手で書き直す(コピペ残骸を消すため)
- それでも直らなければ、
エディタの自動整形(Ctrl+Shift+I) をかける - 最後にログを入れて少しずつ動作確認
■ 7. よくある“実際のエラー例”と修正例
▼ 修正前(エラー)
function myFunc() {
const user = {
name: "kazu"
email: "test@example.com"
}
Logger.log(user)
}
▼ 修正後
function myFunc() {
const user = {
name: "kazu",
email: "test@example.com",
};
Logger.log(user);
}