ChatGPTなどのAIで作ったGAS・関数が動かないときに、まず確認したい5つのこと

記事
ビジネス・マーケティング
ChatGPTなどのAIに頼むと、GAS(Google Apps Script)のコードやスプレッドシートの関数を、すぐに書いてもらえます。
とても便利です。
ただ、「言われたとおりに貼ったのに動かない」ということも、よく起こります。

AIが書くコードは、筋は合っていることが多いです。
動かない原因は、コードの外側にあることがよくあります。
あなたのシートの形、Googleアカウントの設定、Googleが決めている上限などです。
AIはそこまでは見えていません。

この記事では、エラーが出たときに、まず確認したい5つのことをまとめました。
GASにくわしくない方でも確認できる順に並べています。

※GASのコードを貼る画面は、スプレッドシートの上のメニュー「拡張機能」→「Apps Script」で開きます。この記事では、この画面を「エディタ」と呼びます。

■ 1. 最初の「承認」を済ませているか


GASを初めて動かすと、「承認が必要です」という画面が出ます。
これは、このコードがあなたのスプレッドシートやGmailを使ってよいか、確認する画面です。
ここで止めてしまうと、何も起きません。

流れは次のとおりです。
・「権限を確認」を押す
・自分のGoogleアカウントを選ぶ
・「このアプリは Google で確認されていません」という画面が出たら、左下の「詳細」を押し、下に出る「(プロジェクト名)(安全ではないページ)に移動」から先へ進む
 (自分で作ったGASでは、この画面が出るのが普通です)
・使ってよい項目の一覧が出たら、チェックを入れて「続行」(または「許可」)を押す
 (項目を選べる画面では、チェックを外したままにすると、その部分が動きません。「すべて選択」があれば、内容を確かめてからチェックします)

注意が1つあります。
この許可は、コードにあなたのデータを扱わせるものです。
何をするコードなのか、わからないまま許可するのは避けてください。
AIに「このコードは何をしますか」と聞き直すだけでも、安心材料になります。

■ 2. 「トリガー」を設定しているか


「フォームが送られたらメールを送る」「毎朝8時に集計する」のように、自動で動かすには「トリガー」の設定が必要です。
コードを貼っただけでは、自動では動きません。

よくあるのが、次のエラーです。
「Cannot read properties of undefined (reading 'values')」
('values' の部分は、'response' や 'range' など、コードによって変わります)

これは、フォームの送信で動く前提のコードを、エディタの「実行」ボタンで動かしたときに出ることが多いです。
フォームから送られてきた中身がないので、「中身が空です」と言われています。
コードが間違っているとは限りません。

確認すること
・エディタ左の時計のマーク(トリガー)から、トリガーが登録されているか
・「実行する関数」が、動かしたい関数の名前になっているか
・「イベントの種類」が、目的に合っているか(フォーム送信時、時間主導型 など)
・試すときは、実際にフォームから1件送ってみる
・うまく動いたかどうかは、エディタ左の「実行数」で、成功・失敗とエラーの文章を見られます

■ 3. シート名や列の位置が、コードとずれていないか


AIは、あなたのシートを見ていません。
そのため、コードの中では「シート1」「A列が名前」のように、仮の形で書かれていることがあります。

よくあるエラー
「Cannot read properties of null (reading 'getRange')」

これは、コードに書かれた名前のシートが見つからないときによく出ます。

確認すること
・コードの中のシート名と、実際のシートのタブの名前が、1文字も違わず同じか(全角・半角、空白に注意)
・列の番号が合っているか。GASでは「A列=1」と数える場所と、「A列=0」と数える場所が混ざるため、1列ずれやすいです
・あとから列を足したり、並べ替えたりしていないか

関数の場合も同じです。
「#REF!」「#N/A」が出たら、参照している範囲やシート名が、今の表と合っているかを見てください。

■ 4. 1回の実行時間の上限(6分)にかかっていないか


GASには、1回の実行は6分までという上限があります。
データが多いと、途中で止まります。
「起動時間の最大値を超えました」「Exceeded maximum execution time」と出たら、これが原因です。

また、トリガーで自動で動いた時間の合計にも、1日あたりの上限があります(無料のアカウントで1日90分)。
短い間隔(1分ごと など)で動かしていると、こちらにかかることがあります。

よくある理由は、1行ずつシートを読み書きしていることです。
100行なら動いても、数千行になると間に合わなくなります。

確認すること
・止まったときの行数や、処理したデータの量
・トリガーの間隔が、必要以上に短くなっていないか
・AIに「getValuesでまとめて読み、setValuesでまとめて書く形に直して」と頼むと、改善することがあります

■ 5. メールの送信数の上限にかかっていないか


GASからメールを送るときは、1日に送れる数に上限があります。
無料のGoogleアカウントでは、1日あたり100人までです(有料のGoogle Workspaceでは1日1,500人)。
数えるのは「通数」ではなく「宛先の人数」です。1通に3人の宛先を入れると、3人分と数えます。
上限を超えると、「Service invoked too many times for one day: email」のようなエラーが出て、その日はもう送れません。

確認すること
・テストで何度も送っていないか(テストの送信も数に入ります)
・1通に何人も宛先(CC・BCCも含む)を入れていないか
・毎日送る人数が、上限に近くないか

上限は、日本時間の0時ちょうどに戻るとは限りません。前の日にたくさん送った場合は、少し時間をおいてから試してください。
お知らせメールを大勢に送る使い方には、そもそも向いていない場合もあります。

■ それでも動かないときは


ここまでを確認しても動かない場合は、次の3つをそろえて、もう一度AIに聞いてみてください。
・エラーの文章(そのままコピー)
・シート名と、1行目の項目名の一覧
・「何をしたら、何が起きてほしいか」

AIに相談するときは、お客様の名前やメールアドレスなど、個人情報は貼らないように気をつけてください。

■ 自分で直すのが大変なときは


ココナラで、GAS・スプレッドシートの自動化を出品しています。
ChatGPTなどのAIで作ったGAS・関数の修正のご相談も受けています。

・ご購入の前に、コードを文字のまま(エラーの画面のスクリーンショットもあると助かります)メッセージに貼っていただき、直せるかどうかと総額をお伝えします
・対象は、1つのファイルで300行くらいまでで、外部サービスのAPIやLINEとの連携を使っていないものです。GASの不具合1か所(関数なら3か所まで)は、基本料金(3,000円)の範囲でご相談いただけます
・直したコードはコメントつきで開示し、説明書をつけてお渡しします
・正式な納品の前に2日間の確認期間があり、あなたのシートで動かして確かめていただけます

「これって頼めるのかな」という段階のご相談も歓迎です。
やりとりはすべてココナラのメッセージで行います。


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す