スプレッドシートでApps Scriptを使い、フォームの回答を自動で整理する手順


この記事のポイント
- ✓Googleスプレッドシートで Apps Script(GAS)を使い
- ✓Googleフォームの回答を自動で整理する手順を解説します
- ✓回答をシートにつなぐ設定
Googleフォームで問い合わせや申し込みを受け付けていると、回答がどんどんスプレッドシートにたまっていきますよね。最初は上から順に見て対応すれば済んでいたのに、件数が増えると「これは返信したっけ?」「この種類の問い合わせは誰の担当だっけ?」と、確認だけで時間が溶けていきます。
この記事では、スプレッドシートのApps Scriptを使って、フォームの回答を自動で整理する手順を説明します。回答をシートにつなぐ設定から、Apps Scriptの開き方、届いた回答に「未対応」の印を自動で付けるコード、問い合わせの種類ごとに別のシートへ振り分けるコード、フォーム送信をきっかけに動かす設定まで、順番に進めます。コードを書かずに回答の管理から返信までを1か所でまとめたい人向けに、フォームのサービスHalictにも触れます。
スプレッドシートのApps Scriptとは
Apps Scriptとは、Googleのスプレッドシートやフォーム、Gmailなどを、短いプログラムで自動で動かせる仕組みのことです。正式な名前はGoogle Apps Scriptで、略して「GAS(ガス)」と呼ばれます。コードはJavaScriptというWebでよく使われる言語で書き、Googleのサーバーの上で動きます。自分のパソコンに何かを入れる必要はなく、スプレッドシートのメニューからすぐに開けます。
「プログラムなんて書いたことがない」という人も、安心してください。今回作るのは、回答が届いたときに1行の印を付けて、別のシートに写すだけの短いコードです。最初は全部を理解できなくても大丈夫。動かしてみて、少しずつ意味が分かってくれば十分です。
スプレッドシートには「マクロ」という機能もあります。マクロとApps Scriptの関係について、ある解説記事は次のように説明しています。
スプレッドシートには「マクロ」機能もありますが、これは実際にはGASの簡易版です。マクロは操作を記録して自動化する機能で、記録された操作はGASコードとして保存されます。 出典: biz.moneyforward.com
つまり、マクロで記録した操作も、中身はApps Scriptのコードです。マクロは「自分が画面でした操作をなぞる」ことしかできませんが、Apps Scriptを直接書けば「回答が届いたら」「中身がこうなら」といった条件を付けて動かせます。フォームの回答の整理には、この条件付きの動きが欠かせません。
始める前に、回答をスプレッドシートにつなぐ
Apps Scriptで回答を整理するには、まずフォームの回答がスプレッドシートに記録されるようにしておく必要があります。Googleフォームのヘルプ(フォームの回答の保存先を選択する)では、次の手順が案内されています。
- Googleフォームでフォームを開く
- 上部の「回答」をクリックする
- 右上のその他のアイコンから「回答の送信先を選択」をクリックする
- 「新しいスプレッドシートを作成」か「既存のスプレッドシートを選択」を選ぶ
- 「作成」または「選択」をクリックする
同じヘルプには、回答をスプレッドシートに保存すると、データが自動的にテーブルの形式になると書かれています。また、スプレッドシートを削除してもフォームは削除されず、フォームを削除してもスプレッドシートは削除されないとも書かれています。2つは別々のファイルとしてGoogleドライブに保存されるので、片方を整理するときにもう片方を消してしまう心配はありません。
作業の前に、練習用のコピーを作る
ここからコードを書いていきますが、いきなり本番のフォームとスプレッドシートで試すのはやめておきましょう。本番のシートで試して、回答の列をうっかり上書きしてしまうのは、初めての人によくある失敗です。スプレッドシートの変更履歴から元に戻せることもありますが、気づくのが遅れると、そのあとに届いた回答との整理に苦労します。
練習用には、本番と同じ質問を持つフォームを1つ複製し、そこに回答用のスプレッドシートを新しくつなぐのがおすすめです。フォームの右上のその他のアイコンから複製できます。テストの回答は自分で何件か送れば、本番の回答を汚さずに試せます。
今回作る「自動で整理する仕組み」の全体像
コードを書く前に、何を作るのかをはっきりさせておきましょう。今回は、問い合わせのフォームを例に、次の2つを自動にします。
| 自動にすること | 動き |
|---|---|
| 対応状況の印 | 回答が届いたら、その行の「対応状況」の列に「未対応」と書き込む |
| 種類ごとの振り分け | 「お問い合わせの種類」の答えと同じ名前のシートに、回答を1行写す |
フォームには「お問い合わせの種類」という質問があり、「見積もり」「サポート」「その他」の3つから選ぶ形にしておきます。スプレッドシートには、回答が記録される「フォームの回答 1」のシートのほかに、「見積もり」「サポート」「その他」という名前のシートを3つ作っておきます。
こうしておけば、見積もりの担当の人は「見積もり」のシートだけを見ればよくなりますし、全体の回答のシートでは「未対応」の行を絞り込むだけで、手が付いていない問い合わせが一目で分かります。
準備するシートと列
準備は次の3つです。
- 「フォームの回答 1」のシートで、回答の列のいちばん右の隣の列の1行目に「対応状況」と入力する
- 「見積もり」「サポート」「その他」の3つのシートを作る(名前はフォームの選択肢と1文字も違わないようにする)
- 3つのシートの1行目には、回答のシートと同じ見出しを貼り付けておく
2番目の「1文字も違わないように」がとても大事です。フォームの選択肢が「見積もり」で、シートの名前が「見積り」だと、コードは別のものとして扱い、振り分けがされません。全角と半角、余計な空白にも気をつけてください。
Apps Scriptの編集画面を開く
準備ができたら、いよいよApps Scriptを開きます。Googleの公式ドキュメント(コンテナにバインドされたスクリプト)では、スプレッドシートからスクリプトを作る方法を、スプレッドシートを開いて「拡張機能」から「Apps Script」をクリックする、と説明しています。
- 回答がつながったスプレッドシートを開く
- メニューの「拡張機能」をクリックする
- 「Apps Script」をクリックする
- 新しいタブでコードの編集画面が開く
この方法で作ったスクリプトは、そのスプレッドシートに結び付いたスクリプトになります。公式ドキュメントでは、このように特定のファイルに結び付いたスクリプトを「バインドされたスクリプト」と呼び、結び付いたファイルを「コンテナ」と呼んでいます。バインドされたスクリプトは、Googleドライブの一覧には単独では表示されず、元のスプレッドシートから開きます。
編集画面には、最初から function myFunction() {} という空の関数が書かれています。これは消して、次の節のコードを貼り付けます。画面の上のほうにあるプロジェクトの名前は「無題のプロジェクト」になっているので、「問い合わせの整理」のように分かりやすい名前に変えておくと、あとで探すときに迷いません。
回答に「未対応」を付けて、種類ごとに振り分けるコード
編集画面に、次のコードを貼り付けて保存します。
function handleFormSubmit(e) {
const sheet = e.range.getSheet();
const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
// 1. 対応状況の列に「未対応」と書き込む
const statusCol = headers.indexOf('対応状況') + 1;
if (statusCol > 0) {
sheet.getRange(e.range.getRow(), statusCol).setValue('未対応');
}
// 2. 問い合わせの種類と同じ名前のシートに写す
const type = e.namedValues['お問い合わせの種類'][0];
const target = SpreadsheetApp.getActive().getSheetByName(type);
if (target) {
target.appendRow(e.values);
}
}
コードの意味を1行ずつ読む
コードを全部暗記する必要はありませんが、何をしているかを知っておくと、あとで直すときに困りません。
handleFormSubmit(e):この関数の名前です。eには、届いた回答の情報が入ってきますe.range.getSheet():回答が書き込まれたシートを取り出しますheaders:1行目の見出しを左から順に読み込みますheaders.indexOf('対応状況') + 1:「対応状況」という見出しが左から何列目にあるかを調べますsetValue('未対応'):回答が書き込まれた行の、対応状況の列に「未対応」と書き込みますe.namedValues['お問い合わせの種類'][0]:「お問い合わせの種類」という質問への答えを取り出しますgetSheetByName(type):答えと同じ名前のシートを探しますappendRow(e.values):見つかったシートのいちばん下に、回答を1行追加します
Googleの公式ドキュメント(イベント オブジェクト)には、スプレッドシートのフォーム送信のイベントで受け取れる情報として、質問名と値を組にした namedValues や、書き込まれたセルの範囲を表す range が載っています。質問名は、フォームの質問の文章そのものです。フォームの質問を「お問い合わせの種類を選んでください」のように変えた場合は、コードの中の文字も同じに変えてください。
対応状況の列を見出しで探している理由
対応状況の列の位置を「8列目」のように数字で決めずに、見出しの文字で探しているのには理由があります。フォームに質問を追加すると、回答のシートに列が増え、対応状況の列の位置がずれることがあるからです。見出しで探しておけば、列の位置が変わってもコードを直さずに済みます。
フォーム送信のトリガーを設定する
コードを貼り付けただけでは、まだ何も起きません。「フォームに回答が届いたら、この関数を動かす」というきっかけを設定する必要があります。このきっかけを「トリガー」と呼びます。
公式ドキュメント(インストール可能なトリガー)では、編集画面からトリガーを作る手順を次のように説明しています。
- Apps Scriptのプロジェクトを開く
- 左側の「トリガー」をクリックする
- 右下の「トリガーを追加」をクリックする
- 作成するトリガーの種類を選んで設定する
- 「保存」をクリックする
4番目の設定では、実行する関数に handleFormSubmit を選び、イベントのソースを「スプレッドシートから」、イベントの種類を「フォーム送信時」にします。保存すると、スプレッドシートやメールを操作してよいかを確かめる許可の画面が表示されます。内容を確かめて、自分のアカウントで許可してください。
許可の画面で戸惑わないために
許可の画面では、「このアプリはGoogleで確認されていません」という表示が出ることがあります。自分で作ったスクリプトを自分のアカウントで動かす場合には、よく出る表示です。詳細を開いて、自分のプロジェクトの名前を確かめたうえで進みます。
ただし、人からもらったコードや、インターネットで見つけたコードをそのまま貼り付けた場合は、許可する前に、何をするコードなのかを必ず読んでください。許可すると、そのコードはあなたのアカウントの権限で、スプレッドシートの書き換えやメールの送信ができるようになります。
テストの回答を送って、動きを確かめる
トリガーを設定したら、練習用のフォームから自分でテストの回答を送ってみましょう。確かめるのは次の3つです。
- 「フォームの回答 1」のシートに回答が記録され、対応状況の列に「未対応」と書き込まれているか
- 選んだ種類と同じ名前のシートのいちばん下に、回答が1行写っているか
- 種類を変えて何件か送り、それぞれ正しいシートに振り分けられるか
うまくいっていれば、あとは本番のフォームとスプレッドシートで同じ設定をするだけです。本番に移すときは、コードを貼り付け直し、トリガーも本番のスプレッドシートの側で設定し直してください。トリガーはスクリプトごとに設定されるので、練習用で作ったトリガーは本番には引き継がれません。
対応が済んだら、印を書き換える
自動で付くのは「未対応」の印だけです。対応が済んだら、担当の人が手で「対応済み」に書き換えます。対応状況の列に、データの入力規則でプルダウンを設定しておくと、「未対応」「対応中」「対応済み」から選ぶだけで済み、表記の揺れも防げます。
回答のシートの見出しの行でフィルタを作り、「未対応」だけを表示するようにしておけば、朝いちばんにそのシートを開くだけで、今日対応すべき問い合わせが分かります。
回答のシートで、やってはいけない操作
Apps Scriptで仕組みを作ったあとは、回答のシートの扱い方にも少し気をつけてください。次の操作は、仕組みを壊したり、回答の記録をずらしたりする原因になります。
- 回答の列の順番を手で入れ替える:フォームから届く回答は、列の位置を前提に書き込まれます
- 回答の行の途中に、空の行を挿入する:次の回答の書き込み位置がずれることがあります
- 見出しの「対応状況」の文字を書き換える:コードが列を見つけられなくなります
- シートの名前「フォームの回答 1」を変える:毎朝の件数を数えるコードが、シートを見つけられなくなります
並べ替えや絞り込みをしたいときは、行や列そのものを動かすのではなく、フィルタの機能を使いましょう。フィルタなら、見え方が変わるだけで、記録そのものの並びは変わりません。
間違えたときは、変更履歴から戻せる
うっかり列を消したり、上書きしたりしてしまっても、慌てないでください。スプレッドシートには変更履歴があり、メニューの「ファイル」から「変更履歴」を開くと、過去の時点の状態を見て、その版に戻すことができます。
ただし、ある時点の版に戻すと、それ以降に届いた回答もその時点の状態に戻ってしまいます。問い合わせが次々に届いているシートでは、戻す前に、今の状態のシートを別のファイルにコピーしておきましょう。戻したあとで、コピーしておいたほうから新しい回答を貼り付け直せば、記録を失わずに済みます。
動かないときに確かめること
テストの回答を送っても、印が付かない、振り分けがされないこともあります。焦らなくて大丈夫。だいたいは、次のどれかが原因です。
実行の記録を見る
編集画面の左側にある「実行数」を開くと、スクリプトがいつ動いて、成功したか失敗したかの記録が並んでいます。失敗している場合は、記録を開くとエラーの内容と、コードの何行目で止まったかが表示されます。
よくある原因
| 症状 | 考えられる原因 | 直し方 |
|---|---|---|
| 記録に何も残っていない | トリガーが設定されていない、または別のスプレッドシートに設定している | トリガーの一覧を確かめる |
| 「未対応」が書き込まれない | 見出しが「対応状況」になっていない(空白が入っているなど) | 見出しの文字を確かめる |
| 振り分けがされない | シートの名前と選択肢の文字が違う | 全角・半角、空白まで同じにする |
| 「お問い合わせの種類」で止まる | 質問の文章とコードの中の文字が違う | コードの文字を質問の文章に合わせる |
| 許可のエラーで止まる | 許可の画面を途中で閉じた | 編集画面で一度手動で実行し、許可する |
いちばん多いのは、文字の食い違いです。コードの中の文字と、シートの名前やフォームの質問の文章を、1文字ずつ見比べてみてください。シートの名前の後ろに空白が1つ入っていただけで動かない、ということも本当によくあります。
手動で実行するとエラーになる理由
このコードは、フォームから回答が届いたときに受け取る e を前提にしています。編集画面の実行のボタンで直接動かすと、e が空のまま動くので、エラーになります。これはコードの間違いではありません。動作を確かめるときは、必ずフォームからテストの回答を送ってください。
関数で済むこと、Apps Scriptが必要なこと
ここまで読んで、「種類ごとの振り分けなら、関数でもできるのでは?」と思った人もいるかもしれません。その通りです。スプレッドシートには、条件に合う行だけを抜き出す FILTER 関数や QUERY 関数があり、「見積もり」のシートに =FILTER('フォームの回答 1'!A:H, 'フォームの回答 1'!C:C="見積もり") のような式を入れれば、該当する回答だけを表示できます。
関数とApps Scriptの違いを整理すると、次のようになります。
| 比べる点 | 関数(FILTERなど) | Apps Script |
|---|---|---|
| 準備の手間 | 式を1つ入れるだけ | コードとトリガーの設定が必要 |
| 元の回答が変わったとき | 表示も自動で変わる | 写した時点の内容のまま残る |
| 振り分け先に書き込み | 式の範囲には手で書き込めない | 写した行の横に自由に書き込める |
| 回答の行に印を付ける | できない | できる |
| メールの送信 | できない | できる |
見るだけなら関数、振り分けた先で担当者がメモを書き込んだり、印を付けたり、メールを送ったりしたいならApps Script、という使い分けが分かりやすいと思います。関数で抜き出した範囲の横の列にメモを書き込むと、元の回答が増えたときに行がずれて、メモと回答の組み合わせが崩れることがあります。担当者が書き込む前提なら、Apps Scriptで行ごと写すほうが安全です。
「とりあえず振り分けて見たいだけ」なら、まず関数で試してみてください。コードを書かずに済むなら、それに越したことはありません。
毎朝、未対応の件数を自分に知らせる
対応状況の印が付くようになったら、次は「未対応が何件あるか」を毎朝自動で知らせる仕組みを足してみましょう。同じ編集画面に、次の関数を追加して保存します。
function notifyPendingCount() {
const sheet = SpreadsheetApp.getActive().getSheetByName('フォームの回答 1');
const values = sheet.getDataRange().getValues();
const statusIdx = values[0].indexOf('対応状況');
const count = values.slice(1).filter(row => row[statusIdx] === '未対応').length;
MailApp.sendEmail(Session.getEffectiveUser().getEmail(), '未対応の問い合わせ', '未対応は' + count + '件です。');
}
このコードは、回答のシートを全部読み込み、対応状況の列が「未対応」の行を数えて、スクリプトを動かしているアカウントのメールアドレスに件数を送ります。
動かすきっかけは、フォームの送信ではなく時刻です。トリガーを追加するときに、実行する関数を notifyPendingCount にし、イベントのソースを「時間主導型」にして、日付ベースのタイマーで朝の時間帯を選びます。公式ドキュメントには、時刻で動かすトリガーは指定した時刻ちょうどではなく、その前後の1時間のどこかで動くことがあると書かれています。「8時から9時の間に届けばよい」くらいの気持ちで使ってください。
毎朝メールが届くようになると、スプレッドシートを開かなくても、今日どれくらい対応が必要かが分かります。件数が0の日は「今日は返信が済んでいる」と安心できますし、件数が多い日は、午前中に時間を取る判断がしやすくなります。
スプレッドシートを共有するときに気をつけること
問い合わせの対応を複数の人で分担するなら、スプレッドシートを共有することになります。そのときに気をつけたいことがあります。
編集できる人は、スクリプトも見られる
スプレッドシートに結び付いたスクリプトは、そのスプレッドシートの編集の権限を持つ人なら、拡張機能のメニューから開けます。コードの中にパスワードや取引先の情報を書いていると、それも見えてしまいます。コードには、他の人に見られて困る情報を書かないようにしましょう。
回答には個人情報が入っている
問い合わせのフォームには、名前やメールアドレス、電話番号などが入っています。共有の範囲は、対応に必要な人だけに絞ってください。「リンクを知っている全員」に共有する設定にすると、URLが外に漏れたときに誰でも見られる状態になります。
トリガーは設定した人のアカウントで動く
トリガーは、設定した人のアカウントの権限で動きます。メールも、その人のアカウントから送られます。担当を交代するときは、前の担当の人のトリガーを削除し、新しい担当の人が設定し直す必要があります。ほかの人が設定したトリガーには気づきにくいので、引き継ぎのときは「どのアカウントでどのトリガーを設定しているか」を必ず書き残しておきましょう。
仕組みを少しずつ広げるアイデア
基本の仕組みが動いたら、必要に応じて少しずつ広げていけます。いきなり全部を作ろうとせず、困っていることを1つずつ解決していくのが長続きのコツです。
- 受付の日付ごとに、1日の件数を別のシートで数える(COUNTIF関数でもできます)
- 特定の種類の問い合わせが届いたら、担当者にメールで知らせる
- 毎朝決まった時刻に、未対応の件数を数えて、自分宛てにメールを送る
- 回答者のメールアドレスに、受付のお礼のメールを送る
メールを送る処理を足すときは、Googleの公式ドキュメントにある1日の上限に注意してください。一般のアカウント(gmail.comなど)では、1日あたりのメールの受信者数は100人までとされています(Google サービスの割り当て)。問い合わせが多いフォームで、全員に受付のメールを送ろうとすると、この上限に当たることがあります。
また、同じページには、1回のスクリプトの実行時間は6分までとも書かれています。回答が数件ずつ届くフォームなら問題になりませんが、たまった回答を一気に整理し直すような処理を書くときは、この制限を意識してください。
もう1つのコツは、コードに手を加える前に、今動いているコードを丸ごとメモ帳などにコピーして控えておくことです。直した結果うまく動かなくなっても、控えを貼り直せばすぐに元の状態に戻せます。編集画面にも版を残す機能はありますが、まずは手元に控えを残す習慣を付けておくと安心です。関数を足すときも、1つ足したらテストの回答を送って確かめ、また1つ足す、という小さな歩幅で進めてください。一度にたくさん変えると、どこで動かなくなったのかが分からなくなります。
件数が増えたときに、Apps Scriptで回しきれなくなる場面
ここまでの仕組みは、1人か2人で問い合わせに対応している段階なら、とても役に立ちます。ただ、件数や担当者が増えてくると、スプレッドシートとApps Scriptだけでは苦しくなる場面が出てきます。
- 誰がどの問い合わせを担当しているのかを、列を増やして手で管理している
- 返信はメールソフトで送り、送ったかどうかをシートに手で書き込んでいる
- 同じ問い合わせに2人が別々に返信してしまったことがある
- 作った人が忙しくなり、コードを直せる人がいなくなった
特に最後の点は、技術ではなく体制の問題です。Apps Scriptは自由に作れる分、作った人しか中身が分からなくなりがちです。事務を手伝っていた人が抜けたあと、誰もトリガーの存在を知らず、仕組みが止まっていることに数日気づかなかった、という例もあります。
回答の管理から返信までを1か所でまとめるHalict
こうした「回答が届いたあとの管理」を、コードを書かずにまとめたいときの選択肢がHalictです。公式サイトでは、集めた回答を表で管理して、担当や状況の列を手で埋めて、返信はメールソフトで送る、という流れを1つにまとめるサービスとして紹介されています。届いた回答の1件ごとに担当と状況が残り、返信も同じ画面から送れて、開封まで記録されます。
この記事で作った「未対応の印」と「種類ごとの振り分け」は、Halictではステージとタグとして最初から用意されている形です。ほかにも、AIによるフォームの下書きの生成、12種類の入力項目、自動返信、Googleスプレッドシートへの追記、Slack・Teams・Chatwork・Discordへの通知が公式サイトに載っています。
料金のページによると、フリープランは1人で使う場合0円で、フォームの数と回答の数は無制限、ステージの管理と自動返信、CSVの書き出しが含まれています。Googleスプレッドシートとの連携は3人まで使えるスタータープランから、外部への通知は10人まで使えるチームプランからで、金額は税抜の月額で書かれています。
Apps Scriptで自分の手で仕組みを作るのは、とても良い勉強になりますし、件数が少ないうちはそれで十分です。チームで対応するようになり、仕組みの手入れに時間を取られるようになったら、専用のサービスに移ることも考えてみてください。
Halictは、@SOHOを運営する株式会社ライフスケープが開発・提供しています。
スプレッドシートの自動化を仕事に生かしている人を見てきて分かること
@SOHO編集部が2004年から在宅ワークとフリーランスの仲介を続けてきた中で見てきた限りでは、事務やデータ入力の仕事を長く続けている人ほど、こうした小さな自動化を自分の道具として持っています。大きなシステムを作れなくても、取引先の毎日の集計や振り分けを自動にできれば、相手にとっては大きな助けになります。「この人に任せると楽になる」と思ってもらえることが、次の依頼につながっていきます。
運営を続ける中で見てきた範囲でも、取引先と直接やり取りしている人ほど、こうした工夫を提案しやすい関係を作っています。仲介の会社を挟まない取引では、仲介の手数料が引かれない分、同じ予算でも受け取る金額が厚くなり、依頼する側も同じ予算でより多くを頼めます。手数料0%で直接取引できる環境は、小さな改善の提案を積み重ねて信頼を育てていくのに向いています。
業務の自動化を支援する仕事は、AIの業務活用とあわせて相談されることが増えています。仕事の内容はAIコンサル・業務活用支援のお仕事で紹介しています。Apps Scriptからさらに進んで、業務用の画面やアプリを作る仕事に興味がある人はアプリケーション開発のお仕事も参考になります。コードを書かずに業務の仕組みを作る道具を比べたい人には、中小企業のノーコード活用2026|kintone vs Power Apps vs Bubbleが役に立ちます。
まずは練習用のフォームを1つ複製して、テストの回答に「未対応」の印が付くところまで試してみませんか。自分の手で仕組みが動いた瞬間は、きっと思っている以上にうれしいですよ。
よくある質問
Q. スプレッドシートのApps Scriptはどこから開きますか?
スプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックすると、新しいタブでコードの編集画面が開きます。この方法で作ったスクリプトはそのスプレッドシートに結び付き、Googleドライブの一覧には単独では表示されません。次に開くときも、同じスプレッドシートの「拡張機能」から開けます。
Q. フォームの回答が届いたときに自動で動かすにはどうしますか?
編集画面の左側の「トリガー」を開き、右下の「トリガーを追加」から設定します。実行する関数を選び、イベントのソースを「スプレッドシートから」、イベントの種類を「フォーム送信時」にして保存します。保存すると許可の画面が出るので、内容を確かめて許可してください。設定後は、テストの回答を送って動きを確かめます。
Q. コードを実行するとエラーになるのはなぜですか?
フォームの送信をきっかけに動くコードは、回答の情報を受け取る前提で書かれています。編集画面の実行のボタンで直接動かすと、その情報が空のまま動くのでエラーになります。動作を確かめるときは、フォームからテストの回答を送ってください。それでも動かない場合は、左側の「実行数」で記録を開き、止まった行とエラーの内容を確かめます。
Q. Apps Scriptでメールを自動で送るときの注意点は何ですか?
Googleの公式ドキュメントには1日あたりの上限があり、一般のアカウントでは1日に送れるメールの受信者数が100人までとされています。問い合わせが多いフォームで全員に受付のメールを送ると、この上限に当たることがあります。上限は変わることがあるので、公式の割り当てのページで最新の値を確かめ、件数が多い場合は別の方法も考えてください。
この記事について
編集部
監修:@SOHO編集部
2004年よりフリーランス・在宅ワーク向けサービスを運営。生成AIで作成した下書きを、一次情報と照らし合わせて確認したうえで公開しています。

この記事を書いた人
@SOHO編集部
フリーランス・在宅ワークの専門メディア
@SOHOは2004年から続く、日本のフリーランス・在宅ワーク向け案件サイトです。記事は生成AIで下書きを作り、数値・固有名・出典を一次情報と照らし合わせる確認の手順を経て公開しています。
関連記事
カテゴリから探す

クラウドソーシング入門
クラウドソーシングの基礎知識・始め方・サイト比較

職種別ガイド
職種・スキル別の案件獲得方法と単価相場

副業・在宅ワーク
副業・在宅ワークの始め方と対象者別ガイド

フリーランス
フリーランスの独立・営業・実務ノウハウ

お金・税金
確定申告・節税・経費・ローンなどお金の知識

スキルアップ
プロフィール・提案文・単価交渉などのテクニック

比較・ランキング
サービス比較・おすすめランキング

AI活用
職種別にChatGPT・生成AIを活用して業務効率化・収益化するノウハウ

最新トレンド
市場動向・法改正・AIなど最新情報

発注者向けガイド
クラウドソーシングで外注・人材探しをする企業・個人向け

転職・キャリア
転職エージェント・転職サイト比較・キャリアチェンジ

看護師の転職・求人
看護師の転職・派遣・単発バイト・副業など働き方のガイド。診療や医学の情報は扱いません

薬剤師の転職・求人
薬剤師・登録販売者の転職・派遣・パートなど働き方のガイド。診療や医学の情報は扱いません

介護職の転職・求人
介護職・介護福祉士・ケアマネジャー・訪問介護員の転職・派遣・夜勤など働き方のガイド

保育士の転職・求人
保育士・保育補助・幼稚園教諭の転職・派遣・パートなど働き方のガイド

医療職の転職・求人
医師・産業医・リハビリ職・歯科衛生士・管理栄養士・医療事務の転職や働き方のガイド。診療や医学の情報は扱いません

保険
生命保険・医療保険・フリーランスの保険設計

採用・求人
無料求人掲載・採用コスト削減・人材募集の方法

オフィス・ワークスペース
バーチャルオフィス・コワーキング・レンタルオフィス

法律・士業
契約トラブル・士業独立開業・フリーランス新法

シニア・50代
シニア世代のキャリアチェンジ・副業・年金

セキュリティ
サイバーセキュリティ・脆弱性対策・情報保護

金融・フィンテック
暗号資産・決済・ブロックチェーン・金融テクノロジー

ガジェット・機材
フリーランスに役立つPC・デバイス・周辺機器

子育て×働き方
子育てと在宅ワークの両立・保育園・時間管理

補助金・助成金
個人事業主・フリーランスが使える公的補助金・助成金・給付金の申請ガイド

M&A・事業売却
会社売却・事業承継・事業譲渡を考える経営者向け。売却の流れ、税金、従業員への伝え方、仲介会社の選び方

アウトソーシング・外注ガイド
SNS運用・経理・広告など、業務のアウトソーシング(外注)を検討する企業・個人向け。費用相場・依頼の流れ・失敗しない選び方







