Experiment record
Apps Script時間主導トリガーでのみ発生したOpen-Meteo HTTP 429
同じGoogle Apps Script収集関数が手動実行ではHTTP 200、時間主導トリガーではHTTP 429となった。証拠は実行・ネットワークコンテキスト依存を示す一方、プロバイダーの正確なレート制限キーは未解明であり、Cloudflare Workerリレーによって調査対象のスケジュール収集は復旧した。
短い結論
保存された証拠からは、これはトリガー時だけのアプリケーションリクエスト不具合ではなく、実行・ネットワークコンテキストに依存するOpen-Meteo 429問題として扱うのが妥当です。同一の収集関数は手動実行ではHTTP 200で成功し、時間主導トリガーではHTTP 429となりました。保存されたオペレーター記録では、Cloudflare Workerリレーを経由させた後に調査対象のスケジュール収集が復旧しています。
ただし、Open-Meteoが実際にどの識別子をレート制限キーとしていたかは確定していません。
目的
同一のGoogle Apps Script収集関数が、手動実行では成功する一方で時間主導トリガーではOpen-MeteoからHTTP 429を受ける理由を切り分け、未公開のプロバイダー内部仕様を推測で断定せずに実用的な回避策を確認することを目的としました。
観測事実
- 収集関数の手動実行ではOpen-MeteoからHTTP 200が返りました。
- 同一関数を時間主導トリガーから実行すると、daily API request limitメッセージを伴うHTTP 429が返りました。
- 診断ログでは、トリガーイベントオブジェクトを使ってMANUALとTRIGGERを識別できました。
- 一時的な外部IP確認では外向き経路が異なり、手動実行はIPv6、スケジュール実行は別のIPv4を示しました。正確なアドレスは非公開です。
- コード確認では、トリガー時だけ増えるOpen-Meteoリクエストは見つかりませんでした。HTTP 429時にはリトライループも反復呼び出しを続けず停止していました。
- 保存されたオペレーター記録では、Open-MeteoへのリクエストをCloudflare Workerリレー経由に変更した後、スケジュール収集が復旧しました。
- タイムスタンプベースの重複排除と72時間に限定したバックフィル期間は維持されました。
INFERRED
複数の観測を合わせると、障害は通常のアプリケーションリクエスト経路の違いではなく、実行環境またはネットワークコンテキストに依存していた可能性が高いと判断できます。
HYPOTHESIS
異なる外向き経路は、Open-Meteoがスケジュール実行時に遭遇するネットワーク識別子または経路をレート制限対象としていた可能性と整合します。ただし、プロバイダーの正確なレート制限キーは独立に確認されていないため、VERIFIEDな事実として扱いません。
DISPROVEN
確認したアプリケーションコードの範囲では、トリガー時だけの追加Open-Meteoリクエストが429の原因だったという説明は支持されませんでした。
結果
Open-MeteoへのリクエストをCloudflare Workerリレー経由に変更することで、調査対象ワークフローは運用上回避されました。これは今回のケースに対する実用的な回避策を示しますが、Open-Meteo内部でHTTP 429が発生した正確な理由までは確定しません。
PrivacyとProvenance
本ページは旧記録OPENMETEO-TRIGGER-429-001の正式バックフィルです。正確な外向きIPアドレス、座標、Spreadsheet識別子、アカウント識別子、認証情報、家庭内テレメトリは公開対象から除外しています。元実験の正確な実行時刻と、回避後の正確なスケジュール実行ログは公開旧記録には保存されていません。
Canonical Record
experiments/AIEL-2026-0002/experiment.json