GoogleAppsScript(GAS)を使用した業務効率化事例集

**「どういうことが自動化できるのか」**

普段の仕事から退屈な作業を取り除きたいなら
**「自動化脳」**をつくるべし

GoogleAppsScript(以下、GAS)はGmailのアカウントさえあれば
プログラミング学習に付随しがちな

**環境設定**

というものが特にいらないことや

ググればプログラマーじゃなくても
コピペで使えるようなプログラムが見つかったりするので

プログラマーに限らず様々な方々に使われているのかなと思います。

今回はそんなGASを使った簡単な(業務)効率化事例をいくつか共有できればと思います。
また、 **「これ業務じゃないだろ」** というレベルの個人的なものも含んでおります。

できるだけ多くの事例を共有したいので
ひとつの愛嬌ということで許してください←

## 注意事項

*1. 今後も事例が増えれば追加していきますw
*2. 掲載してるプログラムの詳細な使い方は説明がめんどくさいので頑張って読み取ってください
*3. プログラムに間違いを発見した場合はこっそり編集リクエストを送ってくれると嬉しいですw

## 1. 名刺発注確認自動化

以下のような内容のGoogleフォームを作成し
フォームのリンクを含んだメールを月初に送信するようにしました。

![Screen Shot 2018-10-19 at 19.57.48.png](https://qiita-image-store.s3.amazonaws.com/0/45536/53c4cd2a-eaa7-a46d-3d1e-61a8611f2953.png "Screen Shot 2018-10-19 at 19.57.48.png")

GASのトリガーを使えば定期的にプログラムを実行することができるので、
トリガー実行日が月初の営業日であれば
メールを送信する、というプログラムです。

GASはGmailと簡単に連携できるので
メール送信自体はすごくシンプルに実装することができます。

GitHub: https://github.com/yukihirai0505/my-google-apps-script/blob/82387956c55af9d5174fa4bf8bbdb37e4d7e31cd/mail/constant.gs

## 2. Googleカレンダー自動登録

いま働いてる会社には
週に1回、早く出社すれば早く帰れる
という制度があります。

その制度を利用するには

1. 前日までにカレンダー登録する
2. 上司をカレンダーの参加者に登録してメール通知を飛ばす

という手順が必要です。

そこで、
週明け営業日にその週の18時以降予定が入っていない日に自動でカレンダー設定して上司にメール通知するプログラムを作成しました。

GitHub: https://github.com/yukihirai0505/my-google-apps-script/blob/82387956c55af9d5174fa4bf8bbdb37e4d7e31cd/calendar/auto-event-setting.gs

こうすることで

**設定し忘れて週末になっちゃって使えない**

という事態を避けることができます。
圧倒的効率化です。

GASはGmailはもちろんGoogleカレンダーの登録も手軽に実装できるので良いですね。

## 3. 仮想通貨の自動積立購入

お気持ちはわかります。
だんだん業務効率化の方向からずれてきました。
ただ、まだ3つ目なので離脱するわけにはいかないという気持ちを逆手にとらせていただきました。

すいません><

これは仮想通貨取引所のAPIを使用して
毎日決まった時間に仮想通貨を決まった額購入するというプログラムです。

仮想通貨取引所で積立購入サービスの取り扱いをしているところが
自分の欲しい通貨を取り扱っていなかったため

取り扱い通貨のある取引所のAPIを使用して
積立購入プログラムを実装しました。

GitHub: https://github.com/yukihirai0505/my-google-apps-script/blob/c732b6f3ec872f8ec3ba9698250cf32a28697b34/crypto-currency/bitbank/coin-regular-investment.js

GASはHTTPリクエスト用のプログラムも用意してくれてるので
かなりお手軽にHTTPベースで外部サービスとの連携なんかもできてしまいます。

## 4. GitHubに毎日コミットするプログラム

これは主にプログラマ向けですが
GitHubのAPIを使用して

毎日コミット・プッシュするプログラムも書けます

GitHub: https://github.com/yukihirai0505/my-google-apps-script/blob/c732b6f3ec872f8ec3ba9698250cf32a28697b34/github/w-maker.js

GitHubに草を生やすためだけに毎日仕方なくプログラムを書く

というのは不毛です
自動化しましょう

<img width="1028" alt="スクリーンショット 2018-10-20 11.26.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/45536/9d5410a8-0dfb-605d-44b4-ebaef8459db4.png">

これによりスカウトサービス経由で

「GitHubをみましたが、すごくアクティブに活動されてますね」

みたいなメッセージがくることもあり
第一印象で好印象を抱かせることができます

## 5. クローラーの作成

GASにはHTTPリクエストのプログラムが用意されているということは
すでに書きました

これを利用すれば定期的なWEBサイトクロールにも使用することができます
注意点としてあまり対象サイトに負荷をかけないようにしましょう

クローラーを作成することで

定期的にWEBサイトを黙視してチェックしている項目などがあれば
それを自動化してスプレッドシートにチェック項目を毎日自動書き込みする
といったプログラムをつくれます

これは積み重ねていけばかなり大きな効率化につながります

また、クロールしたサイトの画面キャプチャをとってメールで送信することもできます。

いやー、便利ですね。

## 6. メルマガ機能

同じ内容のメールを複数人に一気に送りたいといった場合にも
GASが役立ちます。

メールアドレスを配列で管理して
それぞれのメールアドレスに対してメール送信することで

メルマガ機能のようなものもつくれます。
GASで書いたプログラムをWEBサービスとして公開することで
件名や内容を入力後
スプレッドシートで登録しているメールアドレスに一斉送信
といったことができます。

GitHub: https://github.com/yukihirai0505/my-google-apps-script/tree/82387956c55af9d5174fa4bf8bbdb37e4d7e31cd/mail/mail-list

## 7. シンプルなWEBサービスの作成

GASでつくったプログラムはWEBサービスとして無料で公開することができます。
Googleサービスと連携したサービスをサクッとつくってみたいときに
WEBページとして共有することで
非プログラマでも簡単に操作できるツールを作成することができます。

## 8. シンプルなAPIの作成

GASがWEBサービスとして公開することができることを
利用してシンプルなAPIを作成することもできます。

例えばWEBサービスとして公開した際のURLに対して

- POSTリクエスト => カウントアップ
- GETリクエスト => カウント数取得

のようなシンプルなAPIをサクッとサーバーレスで作れます。

もちろんパラメータをつけることもできるので、
頑張れば複雑なAPIを作成することも可能です。

GitHub: https://github.com/yukihirai0505/my-google-apps-script/blob/4b89cfd6008eaab3533b7ca70c42a8885ba8ec8e/simpleApi/count.js

## 9. Twitterの情報取得・自動ツイート

Twitterの情報を定期的に取得したり
決まった内容を定期的にツイートしたり
といったようなことができます

またTwitterに限らずAPIを公開しているサービスがあれば
同様のことが可能です。
仮想通貨の自動積立購入やGitHubの自動コミットも同じ要領で実装しています。

SlackのようなWebhook機能を備えているサービスも同じく可能です。

Googleのサービスとの連携だけでなく
他のサービスとの連携も簡単に行うことができますね。

例えば、10分ごとに特定キーワードでTwitter検索して
10分以内にツイートがあればSlackにそのツイートURLを送信する

みたいなプログラムも作成することができます。

あらゆるSNS(Youtube, Flickr, Facebook, Instagram etc)やコミュニケーションツール(Slack, Chatwork, Discord, Telegram etc)と連携することで
効率化が可能です。

## 10. 働いているフリをする

これは真似すると怒られるかもしれませんが
一応書いておきます。

真面目に働きたいという気持ちがあっても
人間は完璧ではありません

時にはサボりたくなることもあるでしょう。

そういったときに役立ちます。

Slackで自分にメンションがあった際に

そのメンション内容に `?` が含まれている場合に

「**調べてみるので、少々お時間頂きます**」

と自動で返信するプログラムです。

もちろんパターンはいくつか用意しておくといいでしょう

また、よく自分にメンションでとんでくるメッセージ内容をざっとみてみると
ある程度いくつかのパターンにわけることができるので

それぞれに対応したメッセージを複数用意してレスポンスできるようにするのがベストです。

いや、ごめんなさい。

真面目に仕事するのがベストです←

他にも同じ要領で
きたメールに自動返信するようなプログラムを書いて
あたかも仕事してるかのように振舞うこともできます←

真似する際は自己責任でどうぞw

## 11. Twitterのフォロワー推移・YouTubeのチャンネル登録者推移記録

スプレッドシートに対象Twitterアカウントや
対象YouTubeチャンネルの日々のフォロワー数やチャンネル登録者数の増減を
記録していくプログラムを実装できます。

- GASのトリガー(1日一回起動)
- TwitterのAPI
- YouTubeのAPI

といったものを駆使することで可能となります。

## 12. GoogleDriveのOCRを利用して画像内の文字列を取得

GASだけで画像内にある文字列をプログラムから読み取ることができます。

`光学文字認識(Optical character recognition：OCR)` という技術ですが、

GoogleDriveに保存する際に

```
{
    ocr: true
}
```

のようなオプションを与えるだけで文字列を読み取ることができるようになります。

例えばこちらの画像をOCRで読み取ると

![Screen Shot 2018-11-12 at 13.42.49.png](https://qiita-image-store.s3.amazonaws.com/0/45536/05fb2d2f-b0cd-547f-575c-57e29035e33e.png)


↓のように画像内の文字列を読み取ってくれます。

![Screen Shot 2018-11-12 at 13.38.49.png](https://qiita-image-store.s3.amazonaws.com/0/45536/be23a8c3-6c6b-c783-7b85-ef81ff7bdd60.png)

`YUKI HIRAI` の `HIRAI` が `HIRAL` になっている以外は
まぁまぁ高い精度で読み取れていることがわかります。

これを利用すれば例えばレシートの自動読み取りも実装できます。

GitHub: https://github.com/yukihirai0505/my-google-apps-script/blob/master/ocr/src/index.js

## 最後に

業務効率化事例はまだまだありますし
これからもまだまだ生まれてくると思うので
徐々に書き足していきます。
時間があればコードも掲載しようと思います。