「Google Formsの通知、気づいたらメールの奥底に埋もれていた…」「申請内容をスプレッドシートに毎回コピペしている…」
そんな状況、心当たりありませんか?
- 問い合わせメールに気づくのが翌日になっている
- 誰が対応中なのか、誰も把握していない
- 申請書がどこで止まっているか、承認者に直接聞かないとわからない
こういった状態が続いているなら、すでにGoogle Forms運用は限界に近いです。
自分も最初は同じでした。Google Apps Script(GAS) と聞くと難しそうで、なかなか手が出せなかったのが正直なところです。でも実際に試してみると、驚くほど簡単でした。テンプレートを少し書き換えるだけで、問い合わせ対応や申請フローが劇的に変わったのです。
Google Forms自動化で実現できること
結論から言うと、GASやPower Automateと連携させることで、Google Formsを起点とした業務の大半は自動化できます。
| # | 自動化する業務 | 主な利用ツール | 効果 |
|---|---|---|---|
| ① | 問い合わせ対応 | GAS | 毎日30分の対応時間削減・対応漏れゼロ |
| ② | 申請・承認フロー | GAS / Power Automate | 承認までのリードタイムを平均2日短縮 |
| ③ | アンケート集計 | GAS | 月次レポート作成時間を90%削減 |
自分の経験上、まず①の問い合わせ対応から着手するのが一番効果を感じやすいです。
なぜGoogle Forms自動化が必要なのか?
多くの社内SEが、Google Formsまわりの手作業で時間を奪われています。主な課題は以下の3つです。
- 手作業による集計・データ転記の非効率性
– フォームの回答をスプレッドシートに手動でコピー&ペーストしている
– 転記ミスやフォーマットのズレが発生し、手戻りの原因になる
- 問い合わせ対応の遅延と情報共有の属人化
– 通知メールが個人の受信箱に届くため、担当者不在時に対応が完全に停止する
– 対応状況が共有されず、二重対応や対応漏れが発生しやすい
- 申請フローの複雑化と承認プロセスの負荷増大
– 紙やメールでの申請が混在し、どこで承認が止まっているか不明確になる
– 承認者が申請内容を確認するために、複数のシステムを見回る必要がある
あなたの職場でも、こういったケースはありませんか?
実際にあった話として、Google Formsの通知メールを個人アドレスで受け取っていたチームが、担当者の長期休暇中に問い合わせが完全放置になっていたというケースがあります。返信が来ないことに業を煮やしたユーザーが上長に直接エスカレーションし、IT部門全体の信頼問題に発展した、という話をよく聞きます。「自分のメールさえ見ていれば大丈夫」という運用は、属人化リスクの塊です。
【実践例1】問い合わせフォームの自動応答とチケット化
問い合わせ対応は、自動化の効果が最も出やすい領域です。回答者への一次応答と、担当チームへの通知を自動化しましょう。
回答内容に応じた自動返信メールの設定
フォーム送信直後に「受付完了メール」を自動で送ることで、ユーザーに安心感を与えられます。
手順:
- Google Formsの回答が記録されるスプレッドシートを開きます
- 「拡張機能」>「Apps Script」を選択します
- 以下のスクリプトを貼り付け、保存します
- トリガー設定で「フォーム送信時」にこの関数が実行されるよう設定します
function sendAutoReply(e) {
const itemResponses = e.response.getItemResponses();
let userEmail = '';
let userName = '';
// フォームの質問項目名に合わせてインデックスを調整してください
for (let i = 0; i < itemResponses.length; i++) {
const question = itemResponses[i].getItem().getTitle();
const answer = itemResponses[i].getResponse();
if (question === 'メールアドレス') { // 質問項目名と一致させる
userEmail = answer;
}
if (question === 'お名前') { // 質問項目名と一致させる
userName = answer;
}
}
// メールアドレスが取得できた場合のみ送信
if (userEmail) {
const subject = '【自動返信】お問い合わせを受け付けました';
const body = `${userName}様\n\nお問い合わせありがとうございます。\n内容を確認の上、担当者より改めてご連絡いたします。\n\n---\n株式会社〇〇 システム部`;
MailApp.sendEmail(userEmail, subject, body);
}
}
Slack/Google Chatへの自動通知で対応漏れを防ぐ
個人のメールではなく、チームのチャットツールに通知することで、対応の属人化を防げます。
手順:
- SlackまたはGoogle ChatでIncoming WebhookのURLを取得します
- GASのスクリプトプロパティに、取得したURLを
WEBHOOK_URLというキーで保存します - フォーム送信時に実行される関数に、以下の通知処理を追加します
function notifyToSlack(e) {
// Webhook URLはスクリプトプロパティから取得(直接コードに書かないこと)
const webhookUrl = PropertiesService.getScriptProperties().getProperty('WEBHOOK_URL');
const formData = e.namedValues; // 回答をオブジェクトとして取得
const message = `新しい問い合わせがありました。\n`
+ `------------------------\n`
+ `お名前: ${formData['お名前'][0]}\n`
+ `カテゴリ: ${formData['問い合わせ種別'][0]}\n`
+ `件名: ${formData['件名'][0]}\n`
+ `------------------------\n`
+ `詳細はスプレッドシートを確認してください。`;
const payload = {
'text': message
};
const options = {
'method' : 'post',
'contentType': 'application/json',
'payload' : JSON.stringify(payload)
};
UrlFetchApp.fetch(webhookUrl, options);
}
⚠️ よくある落とし穴: スクリプト内にWebhook URLを直接書き込むと、コード共有時にURLが漏洩するリスクがあります。必ずスクリプトプロパティを使いましょう。
【実践例2】申請フォームの承認フロー自動化
次は、機器購入申請やアカウント発行申請など、承認プロセスを含むフォームの自動化です。
特定の回答に基づく承認者へのメール通知
申請内容(例:金額、部署)によって承認者を動的に変更できます。
手順:
- スプレッドシートに「部署」と「承認者メールアドレス」の対応表を作成しておきます
- GASでフォームの回答から部署名を取得します
- 対応表をVLOOKUPのように参照し、適切な承認者にメールを送信します
function requestApproval(e) {
const department = e.namedValues['申請部署'][0];
let approverEmail = '';
// スプレッドシートの対応表を参照して承認者メールを取得する
// 例: const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('承認者リスト');
// approverEmail = findApproverEmail(sheet, department);
if (approverEmail) {
const subject = `【要承認】${department}から申請が届いています`;
// 本文にスプレッドシートのURLなどを含めて送信
MailApp.sendEmail(approverEmail, subject, '申請内容の確認をお願いします。');
}
}
承認状況のスプレッドシートへの自動記録
承認・否認の結果をスプレッドシートに自動で記録し、進捗を可視化できます。
手順:
- 承認者へのメールに「承認」「否認」のリンクを含めます
- このリンクはGASで作成したWebアプリケーションのURLとし、パラメータに申請IDとアクション(approve/reject)を付与します
- リンクがクリックされるとGASの
doGet(e)関数が実行され、パラメータに応じてスプレッドシートのステータス欄を更新します
Power Automateと連携した複雑な承認プロセスの構築
GASでの実装が複雑になる多段階承認や条件分岐は、Power Automateの得意分野です。
連携の流れ:
- Google Formsの回答を、連携するスプレッドシートに書き込みます
- Power Automateで「Excel Online (Business) – 表に行が追加されたとき」トリガーを設定します
– ※Google スプレッドシートをOneDriveやSharePointに配置する必要があります
- Power Automateの「承認」アクションを使い、TeamsやOutlook上で承認フローを回します
- 承認結果をスプレッドシートに書き戻します
この方法なら、コーディングなしでGUIベースの複雑な承認フローを構築できます。
関連記事:Power Automate入門|社内SEが最初に作るべきフロー3選【テンプレ付き】
⚠️ よくある落とし穴: GASのトリガー設定は、デフォルトではスクリプトを作成したユーザーのアカウントで実行されます。個人アカウントで設定したままその人が異動・退職すると、自動化がそのまま停止します。共有のサービスアカウントで設定するか、実行権限についてチーム内でルールを決めておきましょう。
【実践例3】アンケート集計・レポート作成の自動化
定期的なアンケートや日報の集計作業も、GASで完全に自動化できます。
定期的な集計結果の自動メール送信
毎週・毎月など、決まったタイミングで集計結果を関係者に自動でメール送信できます。
手順:
- 回答データが溜まっているスプレッドシートで集計用のシートを作成し、
COUNTIFやAVERAGE関数でサマリーを作成しておきます - GASで集計シートの内容を読み取り、整形してメール本文を作成します
- トリガー設定で「時間主導型」を選択し、「毎週月曜日の朝9時」のように定期実行を設定します
データ分析レポートのテンプレート化と自動生成
GoogleドキュメントやGoogleスライドをテンプレートとして用意し、GASでスプレッドシートのデータを差し込むことで、定型レポートを自動生成できます。
手順:
- Googleドキュメントで
{{client_name}}や{{satisfaction_score}}のようなプレースホルダーを含むテンプレートを作成します - GASでスプレッドシートから最新データを取得します
DocumentAppやSlidesAppを使い、テンプレートをコピーした上でプレースホルダーを実際のデータに置換します- 生成したドキュメントのURLをメールで通知するか、PDF化して共有ドライブに保存します
関連記事:ChatGPTでExcel業務を自動化する方法|社内SEが使える関数・VBA活用例のように、AIを活用してレポートの要約文を自動生成させることも可能です。
⚠️ よくある落とし穴: GASの実行時間には6分間という上限があります。大量のデータを処理したり、複雑なレポートを生成したりするとタイムアウトする可能性があります。処理を分割するか、より効率的なコードを意識しましょう。
実際に使ってみた結果
- かかった時間: 初期設定(自動返信+Slack通知)に約2時間。スクリプトプロパティの設定やトリガー設定に慣れれば、次回以降は30分程度で終わります
- 削減できた時間: 問い合わせ対応の確認・一次返信だけで、毎日約30分かかっていた作業がほぼゼロに。月換算で10時間以上の削減になりました(目安として)
- 詰まったポイント: フォームの質問項目名とスクリプト内の文字列が1文字でもずれると動かないので、コピペではなく確認しながら入力するのが鉄則です。あとはトリガーの実行アカウントまわりで一度ハマりました
- 正直な感想: 最初の設定は少し面倒ですが、動いた瞬間の達成感は大きいです。一度動き出すと、もう手動には戻れません
結論(社内SEならこう使う)
Google Forms自動化は、問い合わせの「受付→通知→記録」をまるごと自動化するところから始めるのが最も効果的です。まず自動返信とSlack通知だけ動かしてみて、「これ、自分でも作れた」という感覚を掴んでから、承認フローやレポート自動化に広げていくのがおすすめです。
まとめ:Google Forms自動化で社内SEの価値を最大化する
Google Formsの自動化は、単なる作業効率化にとどまりません。
- 時間の創出: 手作業をなくし、より戦略的なIT企画やシステム改善に時間を使えるようになります
- 業務品質の向上: 対応漏れや転記ミスを防ぎ、業務プロセスの正確性が上がります
- プロセスの可視化: 申請状況や問い合わせ対応の進捗が、チーム全員に見える状態になります
まずはこの記事で紹介した「問い合わせフォームへの自動応答」から試してみてください。小さな成功体験が、次の自動化への大きな一歩になります。
関連記事:社内SEが自動化すべき業務10選|現場で使える具体例と実装手順
関連記事:VBAとPower Automateの違い|社内SEはどちらを使うべきか【結論あり】

