##はじめに
今日の記事はいつもと趣向を変えたテーマで、基本的に私と同じような非エンジニアの方に向けた記事です。
(ほら、毎日手が込んだカレーばっかり食べてると飽きて、お手軽パスタに浮気したくなる気持ちってあるでしょ?それと同じことです。)
CureAppのほんの一部分の雰囲気が伝われば、うれしいです。
google app script(GAS)との出会い
いきなり本題に入りますが、GASはgoogleが提供しているサービス(gmailやらgooglecalenderやらspreadsheetやら)をつなげるサーバーサイド・スクリプト環境です。
CureAppで財務・管理・いろんな業務をやっている私は、毎月やってくる立替経費や勤務表の集計といった月次締処理をどうにかして無料で楽にできないかと試行錯誤した結果、GASにたどり着きました。
ちなみにGASはjavascriptで動きます。
そしてCureAppはjavascriptでプロダクト開発をしています。
つまり社内には私のようなjavascriptひよこ組の人間にとっては、いっぱい師匠がいるわけです。(ぱちぱち)
botづくり・自動化にはまる
cureappはコミュニケーションツールとして、chatworkやslackをつかっています。
その中で日次や月次で定期的にアナウンスしなくてはいけない事項がたくさんあるのです。
でもいちいち真心こめて人力入力するわけにもいきません。
そこで、覚えたてのGASでいろいろ定期アナウンスbotをつくりました。
以下が、cureappの中で走り回っているbotちゃんたちのほんの一部です。
- googlecalendarに登録された、今日1日の自分の予定をプライベートチャンネルにつぶやくbot
→このbotが毎朝出社前につぶやいてくれるおかげで、目が覚めてから3秒で一日の予定を簡単に把握することができます。
- googlecalendarに登録された、今日1日の会議室の予約状況を全社チャンネルにつぶやくbot
→会議室予約状況をいちいち見に行く必要がなくなったので、ダブルブッキングの数が激減したと思います。
- 毎日15時に①今日実施した作業内容②これからの作業内容③つまづいている作業内容を質問するbot
→簡単に皆さんが進捗報告及びその確認をすることができるようになりました。(ぱちぱち)
- 勤務表や立替経費システムへの入力を定期的に呼びかけるbot
→これで入力漏れを理由とした修正作業が圧倒的に減りました(大拍手)
自動化の返り討ちにあう
そんなこんなでGAS及びjavascriptに馴れてきたある日、ふと会社のお問い合わせメールのような会社宛に届いたメール内容をchatworkへ通知する必要性が発生しました。
概要としては、こんな感じです。
-
GASで、gmailの未読メールがあれば、そのメール内容を抽出し、特定のchatworkへ通知すると共にそのメールを既読にするプログラムが走る
-
1分ごとにそのプログラムが起動する。
ここまではある程度比較的にスムーズに設定することができ、ちょうど帰宅時間でしたので、仕事を切り上げ帰宅しました。
ただ、次の日悪夢のような事態が発生しました。
gmailでは基本的にスレッドでまとめて処理するので、私の作成した当初のコードでは、同一スレッドで新着メールが届いた場合、ひたすらにそのスレッドの1番最初(古い)のメールをつぶやき、本来既読にすべき新着メールはそのままの状態であり続けたので、1分ごとに同じメールをchatwork上でつぶやき続けたのでした。。その状態に気づいたのは土曜の夕方だったので、chatworkの未読数が1,000を超えていて、最初何が起こったのかわからず、1時間ほどパニックになりました。(その節は大変ご迷惑をおかけしました。)
今では上記スレッドのルールにも無事対応し、きちんと機能しています。
ただ、自動化する時にはしつこいくらいにテストしてから本番環境にリリースしようという事を身をもって感じました。
おわり
ここまで読んで、もしかしたらお気づきかもしれませんが、当初の目標であった勤務表・立替経費の自動集計システムの構築はまだ達成できていません。(ただ、言い訳するとgoogleformとspreadsheetでかなり楽チンになってます。)
ただ、私のような非エンジニアでもたくさんぐぐって、ちょっと背伸びするだけで日々の作業を楽チンにして本当に注力しないといけない作業に集中できます。
また、なによりプロダクトチームの方々が私のしょうもない質問に本気で対応してくれることに大感謝です。
以上、つらつらと書いてきましたが、今日はこのあたりで終わりにしようと思います。
またね