GAS の落とし穴4つ:日本語の関数名、PHP からの呼び出し、消えたプロジェクト、Safari のフォーム

Google Apps Script(GAS)で当たった4つの落とし穴と直し方。日本語の関数名が google.script.run から呼べない、PHP の CURLOPT_CUSTOMREQUEST で GAS の転送が壊れる(CURLOPT_POST で解決)、消えたプロジェクトの取り戻し方、Safari のフォームの復元で時刻がずれる、の4つです。

「GAS の落とし穴4つ」の文字と、日本語の関数名・CURLOPT_POST・デプロイの ID・Safari の札

GAS(Google Apps Script)が、エラーも出ずにうまく動かない時は、次の4つを疑ってください。関数の名前は英数字にする(日本語の名前は google.script.run から呼べなかった)、PHP の curl では CURLOPT_CUSTOMREQUEST ではなく CURLOPT_POST を使う、消えたプロジェクトはデプロイの ID から探す、Safari のフォームの時刻はサーバーで決める、です。

店舗の業務の仕組みを、Google Apps Script(GAS)で作ってきました。その中で、エラーも出ずにうまく動かない、気づきにくい落とし穴に何度か当たりました。この記事は、そのうちの4つと、どう直したかの記録です。

4つの落とし穴と直し方:日本語の関数名は英数字に、PHP から呼ぶ時は CURLOPT_POST、消えたプロジェクトはデプロイの ID から探す、Safari のフォームの時刻はサーバーで決める
4つの落とし穴と、直し方

1. 日本語の名前の関数が、google.script.run から呼べない

GAS の Web アプリでは、画面の JavaScript から google.script.run を使って、サーバー側(GAS)の関数を呼びます。

墨の跡のある紙の上に置かれた、筆と赤い置き物の写真
日本語の名前の関数は、呼べなかった(イメージ写真)
Google Apps Script名前は英数字に(仕組みが分かる短い見本)
// × 画面から呼べなかった
function 集計を読む() { /* … */ }

// ○ 英数字の名前にする
function readSummary() { /* … */ }
エディタの再現。日本語の名前の関数は画面から呼べず、英数字の名前の関数は呼べる
日本語の関数名は呼べなかった

2. PHP から GAS を呼ぶ時、CURLOPT_CUSTOMREQUEST で転送が壊れた

画面をレンタルサーバーに移したあと、PHP から curl で GAS の Web アプリにデータを送る形にしました。

GAS の Web アプリは、送られたデータを受け取ったあと、結果を別の URL へ転送して返します。curl の CURLOPT_CUSTOMREQUEST は、最初の1回だけでなく、転送先への問い合わせにも同じ方法(この場合は POST)を使います。転送先は、POST ではなく普通に開かれる(GET)ことを前提にしているので、ここで壊れていました。

PHPGAS に送る(仕組みが分かる短い見本)
$ch = curl_init($gasUrl);   // GAS の Web アプリの URL は設定から読む
curl_setopt_array($ch, [
    CURLOPT_POST           => true,   // CURLOPT_CUSTOMREQUEST => 'POST' は使わない
    CURLOPT_POSTFIELDS     => json_encode($payload),
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
    CURLOPT_FOLLOWLOCATION => true,   // GAS の転送について行く
    CURLOPT_RETURNTRANSFER => true,
]);
$body = curl_exec($ch);
PHP から GAS へ送る流れの図。CURLOPT_CUSTOMREQUEST では転送先も POST で開かれて壊れ、CURLOPT_POST なら転送先は普通に開かれて結果が返る
転送先が壊れる原因と直し方

3. ゴミ箱に入った GAS のプロジェクトを、デプロイの ID から見つけて戻した

ある時、動いているはずの GAS のプロジェクトが、誤ってゴミ箱に入っていたことがありました。

動いているはずの GAS のプロジェクトがゴミ箱に入っていた時、サーバーの設定ファイルに残っていたデプロイの ID を手がかりにゴミ箱の中から見つけて元に戻した
外から呼んでいる ID は、どこかに書き残しておく

4. Safari のフォームの復元で、記録の時刻がずれた

iPhone の Safari で使うフォームに、記録の時刻を入れる欄がありました。時刻は、フォームの側で入れていました。

古い世界地図の上に置かれた、懐中時計の写真
Safari では、記録の時刻がずれた(イメージ写真)
記録の時刻の決め方の比較の図。画面で入れると Safari が前の時刻を復元して送り、サーバーで決めると受け取った時刻が記録される
時刻はサーバーの側で決める

まとめ

GAS の落とし穴4つ:日本語の関数名、PHP からの呼び出し、消えたプロジェクト、Safari のフォーム:要点のまとめ。google.script.run から呼ぶ関数に、日本語の名前を付けない。コードの名前はすべて英数字にする
この記事の要点
  • google.script.run から呼ぶ関数に、日本語の名前を付けない。コードの名前はすべて英数字にする
  • PHP の curl で GAS に送る時は、CURLOPT_CUSTOMREQUEST ではなく CURLOPT_POST を使う
  • 外から呼んでいる GAS のデプロイの ID は、プロジェクトを探す手がかりになる
  • 記録の時刻は、画面ではなくサーバーの側で決める

この記事は、AI(Claude)の支援を受けて作成し、筆者が内容を確認しています。

  • Google Apps Script
  • GAS
  • google.script.run
  • PHP
  • curl
  • Safari

関連する記事

この記事に関連するサービス・アプリ

ブログの一覧へ