ENGINEER BLOG

ENGINEER BLOG

Google Apps Scriptで問合せ履歴を自動管理してみた

はじめまして。
インテグレーションサービス本部の肥沼です。

簡単に自己紹介をすると、外ランチが生きがいの開発職の女性社員です。
今回はそんな私がオススメする弊社近くのランチスポットについてご紹介します。
弊社にご来社頂く際はぜひ、ランチの参考にしてくださいね!

という内容を書くとブログ管理者の笹野くんに怒られそうなので、
最近勉強した技術のお話を書きたいと思います。
(笹野くん、怒らないで…)

現在の業務と課題

現在私が担当している基幹システム(IBMi)の保守業務では、
お客様より問い合わせを頂き、調査や見積もり作成、開発を行っています。

日々の保守業務には以下のような課題があります。

  1. 問合せの履歴をGoogleスプレットシートでまとめている。
    が、メールで受けた問合せの内容の転記作業が面倒。

  2. 問合せの手段がメール、ハングアウト、電話のため、問合せ手段をなるべく統一化したい。

  3. 問合せのフォーマットが決まっていないため、お客様から頂く情報が足りないこともある。
    ゆえに、期日や問合せの背景など何度もメールで確認することもしばしば。

今回は、これらの課題を解決するために、GAS(Google Apps Script)をいじってみようと思います。

問合せは、Googleフォームに統一しよう

今回は、問合せの際はお客様に「Googleフォーム」を使用して問合せ内容を入力して頂き、
問合せ一覧のスプレットシートに自動で内容を転記するようにします。

フォームを固定化するので情報漏れが防げますし手作業で履歴を転記する手間も省けますね。

運用フローを作成しよう

flow

まずは運用フローを作成しました。
お客様から問合せ→受付(回答)→問合せクローズの流れです。
いいですね、このようなフローの感じで進めていきましょう。

ほしい機能について洗い出してみよう

運用フローを作成したので、続いてどういった機能があれば、
より保守業務の質がよくなるか考えてみました。

  • 管理番号の自動採番
  • 問合せがあった際に、問合せ内容を自動で保守担当者に送信。問合せ控えも送れたらより親切。
  • 管理番号をキーにして、問合せ完了まで、ステータス管理を行いたい。(対応中→クローズまで)

これらの機能は、フォームを単純に作るだけでは実現できません。
であれば、実装あるのみです。

スクリプト言語は、先に記載をした通りGASです。
JavaScriptのようなものでしたが、
GASのリファレンスや、インターネットで調べた情報を見れば、
GAS初心者の私でもなんとかコーディングできました。

まずはGoogleフォームを作成しよう

form

続いて、運用フローの通り、
問合せフォーム、受付・回答フォーム、クローズフォームを作成します。
これはアンケートを作成する感覚で簡単にできます。さくさく作ります。
記述式だったり、ラジオボタンにしたり、アレンジが加えられるのがよいです。

実際にスクリプトエディタを使って実装しよう

問合せフォームから入力があると、自動で内容が書き込まれる
マスターの役割を持つスプレットシートから
「ツール」→「スクリプトエディタ」を選択します。

さあ、実装を開始しましょう!

スクリプトのトリガー設定をする

まずは、どのタイミングでスクリプトが起動するかを設定します。
時計マークを押下し、フォームが送信されると、スクリプトが動くようにしてみました。
トリガーの設定も簡単ですね。

trigger

フォームの問合せ内容を「問合せ一覧のスプレットシート」に書き込ませる

書き込ませましょう。
getRangeとsetValueのメソッドを使用します。

//問合せデータを問合せ一覧シートに出力する
Outputsheet.getRange(setGyo,Kanriban).setValue(numKanriBango);    //管理番号
Outputsheet.getRange(setGyo,Toiawasehi).setValue(ToiawaseDate);   //発生日

スプレットシート用のクラスのリファレンスを見れば、難なく実装できます。
スプレットシートクラスのリファレンス
英語なのが、少しつらい。
私は流れるような速さでChromeのウェブページ翻訳ボタンを押下しました。

フォームの問合せ内容をメールで送る(問合せ者・受付者)

問合せ担当者には控えとして、受付担当者には問合せが来た旨が分かるように、
メールを送る機能を実装します。

以下のロジックで、問合せ内容をメール本文を生成し、メールを送信します。

//メール本文生成
  //件名(To承認者
  var subject = "【問合せ】管理番号:" + numKanriBango + "_" + ToiawaseDate + "(" + ToiawaseTitle + ")依頼";
  //件名(To申請者
  var subjectHikae = "【問合せ】管理番号:" + numKanriBango + "_" + ToiawaseDate + "(" + ToiawaseTitle + ")依頼(控)";
  //以下本文(\n:改行)
  body =  "保守メンバー 各位" + "\n\n";
  body += "以下、問合せが来ています。ご確認ください。" + "\n\n";
  body += "-----------------------------------------------------------" + "\n";
  body += "問合せ管理番号:" + numKanriBango + "\n";
  body += "-----------------------------------------------------------" + "\n";
  body += "問合せ件名:" + strToiawaseTitle + "\n";
  body += "-----------------------------------------------------------" + "\n";
  body += "問合せ担当者:" + strToiawaseSya + " 様" + "\n";
  body += "-----------------------------------------------------------" + "\n";
 
 ~(略)~

 //メールを送信!
  //To受付担当者
  MailApp.sendEmail({to:to, replyTo:reply, subject:subject, name:"自動送信", body:body});
  //To問合せ担当者
  MailApp.sendEmail({to:cc, replyTo:reply, subject:subjectHikae, name:"自動送信", body:bodyHikae});

上記のように、受付・回答フォーム、クローズフォームのスクリプトも実装し、
プロトタイプ版ですが、問合せ履歴を自動管理するためのツールが完成しました。

実際にフォーム入力をすると、
以下のように問合せ内容が問合せ一覧のスプレットシートに出力され、
メールも送信されるようになりました。

inquiry

問合せ中に質問のラリーがあった際のログ管理や、
他の保守業務でも使えるようにフォーム構成変更など、
追加開発は今後も行っていきたいと思います。

問合せ系の保守業務の標準化に使えそうなので、二次開発に乞うご期待ください。

さいごに

以上で初ブログ担当終了です。
私が担当しているシステムの開発言語はなかなかに歴史のある言語です。(RPG!)
それもあって新しいことには少し縁遠く感じがちですが、
古いシステムを守っていきながら、新しい技術や便利なツールを学んで
業務の効率化をしていこうと思う良い機会になりました。

ブログの話が来たときはどうなるかと思いましたが、
ただの食べログにならなくてよかったです。
チーズタッカルビのおいしいお店の情報を書きたかった

それでは最後まで読んで頂き、ありがとうございました。