未来を創る、テックコミュニティー

未来技術推進検定の裏方、GASを使った自動返信

井上
2020/09/24

こんにちは! 広報の井上です。
今月初旬にいよいよ、未来技術推進検定SDGs編、オープンしましたー!!
引き続き皆さんのご応募お待ちしております。

未来技術推進検定SDGs編

実は、こちらのシステムフローの検討に関わっており、初めてGASを使ったので記事を書くことにしました。

GASとは?

簡単に言うと、Gmail,Googleカレンダー,Googleフォームなどを拡張できるスクリプトです。
一般的なWeb言語を使い、初めから使える状態で着手することができます。

公式では次のように書いているので、詳しく理解したい方はぜひご覧ください。

Apps Script は、G Suite の統合、自動化、拡張のためのビジネス ソリューションをすばやく簡単に構築するための唯一のローコード プラットフォームです。

Apps Script を使えば、ビジネス ユーザーは日常的な課題を解決するカスタム ソリューションをすぐに作成できます。本格的なソフトウェア開発リソースは不要です。

Apps Script を使えば、HTML、CSS、JavaScript を使って開発を行えます。独自のフレームワークの知識を新たに身に付ける必要はありません。

※抜粋: Apps Script (G Suite) https://gsuite.google.co.jp/intl/ja/products/apps-script/

Udemyのコースをはじめ、さまざまな方がブログなどであげているので興味ある方は合わせて見てみてください!

【Google Apps Script入門】GASでできることや活用方法まで紹介!

今回やったことと、スクリプト

さて、今回やったことを少し紹介してみます!
全文ではないですが、ピックアップして紹介するので書き方の参考にしていただければ。

固定値、起動関数を設定する

メール送信のアドレスや名称、まず初めに呼び出す関数を定義します。
変数については、スコープなどにより適宜設定ください。

// 固定値
 var admin = “****@ <ドメイン>“; // 送信元アドレス
 var admin_name = “〇〇 事務局”; // 送信元名称

function main(e){
 var function_name = “main()”;
 var itemResponses = e.response.getItemResponses();
 var answerlist = “”;
 ・・・
 // 入力読み込み(回答された各項目について、ループ処理を記載)
 …

入力情報を取得

上記で読み込みデータを受け取ったら、入力データを分解しながら具体的な処理を定義していきます。

for (var i = 0; i < itemResponses.length; i++) {

ループ処理中の記載はこんな感じに定義しています。
データを読み取るとともに、メール本文で出力するために、採番してリスト化もしておきます。

var itemResponse = itemResponses[i];
var question = itemResponse.getItem().getTitle();
var answer = itemResponse.getResponse();

answerlist += i.toString() + ‘. ‘ + question + ‘: ‘ + answer + ‘\n’;
if(question == “氏名”) var name = answer;
else if(question == “メールアドレス”) var mail_address = answer;
・・・
else if(question ==”参加人数”) var group_count = answer;

それぞれの設問の回答は、KVSのようなイメージですね。
ベースコードから知識を埋めたところもあるので、別途時間作って調べてみようと思います。

合計金額を計算

ループ処理を抜けたら、申し込み人数から請求金額を計算してみましょう!
他のプログラム言語と同様に、計算ができます。

var billing = 1000 * group_count;

ただし、このままだと文章に出力した際に「10万円」が「100000円」となって見にくいので、本文では次のように表現しています。

 content = ‘請求額  ’ + (billing.toLocaleString()) + ‘円(税込)’

こうすると、「請求額  100,000円(税込)」となって、自動ながらちゃんとした文章になっていますね。

本文の作成

さて、読み取った情報を引用して、メール本文を作ってみましょう!
文末、文中の改行は全体でどのようなメールになるのかイメージしにくいので、そこそこテスト送信しました。

var content = name + ‘様\n’
+ ‘\n(***挨拶***)’
+ …
+ ‘\n\n■ お申し込み内容\n\n’
+ answerlist
+ ‘\n\n■ お支払方法’
+ ‘\n(***支払い方法***)’
+ …
+ ‘\n\n(***締め***)’;

メールを送信

さて、ここまでで材料は揃ったので、実際にメールを送ってみます。
いろいろ実験してみましたが、TO/CC/BCCも予約語にあり、使い勝手が良さそうなのでまた機会があれば使ってみたいと思います。

GmailApp.sendEmail(mail_address, title, content, {cc:admin, from:admin, name:admin_name});

最後に

幸いにも、ベースプログラムと相談できる方がいて対応しましたが、基本的には新たに言語を習得する必要はありません。
これだけ便利なツールがGmailを持っているだけで使えるなんて!
初中級者でも楽しんでプログラムでき、かつ結果がすぐ検証できるので、アンケートや簡単な占いなど作ってみてはいかがでしょうか。

この記事を書いた人
井上
エディター