LINEから決まったフォーマットのツイートをさせてみた

# はじめに
私は22卒で就職活動をしている理系大学院生です．
情報系ではないので，プログラミングは趣味程度にしか触っていません．
なので間違った点もあるかも知れません，あしからず．

私は春から就職活動を始めたのですが，そこでお世話になっているのが[intee]("https://intee.jp/")というキャリア支援サービスです．

- 専属のメンターがつく
- 各種ワークショップの開催
- プログラミング講座

などのサービスを提供していただいています．
とてもいい刺激をもらっているので，22卒の方，もしよろしければご検討ください．
そんなinteeのサービス中にリアルカレッジという，現役エンジニアの方が講師として指導してくださる勉強会があります．
初級ではHTML/CSS,JavaScriptの基礎，中級ではGASを用いたアプリケーション開発がテーマでした．
そこで本記事では，中級コースで私が制作したアプリケーションについて簡単に紹介します．

# 背景
私は毎日どんな作業をしたかTwitterに投稿しています．
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">6日目<br>☑Railsの講座<br>☑ES作成・修正<br>☑応用情報の勉強<a href="https://twitter.com/hashtag/%E4%BB%8A%E6%97%A5%E3%81%AE%E7%A9%8D%E3%81%BF%E4%B8%8A%E3%81%92?src=hash&amp;ref_src=twsrc%5Etfw">#今日の積み上げ</a> <a href="https://twitter.com/hashtag/KT33%E3%81%AE%E6%AD%A9%E3%81%BF?src=hash&amp;ref_src=twsrc%5Etfw">#KT33の歩み</a> <a href="https://twitter.com/hashtag/22%E5%8D%92?src=hash&amp;ref_src=twsrc%5Etfw">#22卒</a><br>久しぶりにRailsの講座進められたけど，やっぱり楽しいな💻</p>&mdash; たかお | 22卒就活＆プログラミング (@33takao) <a href="https://twitter.com/33takao/status/1268203464644890631?ref_src=twsrc%5Etfw">June 3, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
基本的なフォーマットは

- 継続日数
- 内容
- ハッシュタグ（固定2+内容に応じて）
- コメント

となっています．
ここで困っているのが以下の点です．

- 投稿の度に前回の日数を確認しないとだめ
- コピペすると日数ミス・文字化けが発生する可能性大
- PCの公式クライアントがうまく入力できない

特に日数管理を行うのがとても億劫でした．
そこで日数管理を自動化するためのアプリを開発することにしました．

# LINEからツイートしよう
## LINEとGAS
GASを使うのはほとんど確定しており，入力→GAS→Twitterは確定しました．
そこで次に考えるのは入力をどうするかで，今回はLINEにしました．
これは簡単なLINE Botをコース内で経験していたためです．
その時の参考記事が[こちら](https://qiita.com/hakshu/items/55c2584cf82718f47464)．
ここでLINE Botが完成してるのが以降の前提条件です．

## GASとTwitter
次はGAS→Twitterについてです.
以下の記事などを参考に実装しました．
[GASでTwitterAPIを叩いてみる](https://tech-cci.io/archives/4228)
[プログラミング未経験でもできた！文系女子がGASでTwitterのbot作ってみた](https://paiza.hatenablog.com/entry/2020/02/14/%E3%83%90%E3%83%AC%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%B3%E3%81%AB%E3%83%81%E3%83%A7%E3%82%B3%E3%81%8C%E5%B1%8A%E3%81%8F%21%3F_%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E6%9C%AA#Twitter%E3%81%AEAPI%E5%88%A9%E7%94%A8%E7%94%B3%E8%AB%8B%E3%82%92%E3%81%97%E3%82%88%E3%81%86)
[Google Apps Script (GAS) でTwitterへ投稿するだけの機能を実装してみる](https://qiita.com/akkey2475/items/ad190a507b4a7b7dc17c)
ここでのネックはTwitterのDeveloper登録とAPIのKeyの取得でした．
本当は最新バージョン対応で丁寧な解説のサイトがあったきがするのですが，見当たらないので許して．
これらの記事を参考にして，Twitter側のCallbak URLに”https\://script.google.com/macros/d/GASのスクリプトID/usercallback ”の登録，TwitterのAPI Keyを2つ使用して認証インスタンスの作成などを行います．
正直ここらへんはあまり深く理解できてないので，上記のサイトや各々ググってみてください．
ここまででGASからのツイートは可能となったことにします．

# GASでの操作
この段階で

- LINE Bot
    - LINEからデータの取得
    - LINEへのリプライ
- GASから任意の文字列をツイート

が可能となっています．
あとはLINEから入力されたデータを整形しツイートするだけです．

## 実装する機能とルール

- 継続日数を投稿の度にインクリメント
- 入力データを決まったフォーマットに整形し投稿
- 140字チェック
- 継続日数の再設定

継続日数はGoogleスプレッドシートに保存しておき，関数が呼ばれる度に読みに行き，処理後にインクリメントした値を保存することとします．

また，LINEからの入力は

```
進捗1
進捗2
進捗3

タグ1
タグ2

本文1
本文2
```

のようなフォーマットとします．
進捗，タグ，本文の数はそれぞれ任意の数で，その間は空行で区切ります．
このような入力を上で示したようなツイートに整形するために，3つの配列に切り分けていきます．

まず，改行のエスケープシーケンスは\nなので，.split("\n")を用いて入力データを配列に切り分けると以下のような配列になります．

```
[進捗1,進捗2,進捗3,,タグ1,タグ2,,本文1,本文2]
```

ここから各要素は空文字で区切られているため，for文とif文で3つの配列に要素を格納していきます．
各要素ごとに配列を作ってしまえばあとは整形するだけなので省略します．

これでLINEから入力されたデータを整形することが可能となりました．

あとは文字数チェックや数字だけの入力の場合に継続日数を再設定するようなプログラムを記述します．

最後に，正常投稿，文字数オーバー，継続日数再設定のそれぞれの場合ごとにLINEへのリプライを設定し開発終了です．


# 完成したアプリ
実際に作成したアプリの画像です．
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">こんな感じです <a href="https://t.co/jAyaAEewi2">pic.twitter.com/jAyaAEewi2</a></p>&mdash; たかお | 22卒就活＆プログラミング (@33takao) <a href="https://twitter.com/33takao/status/1275009503797248000?ref_src=twsrc%5Etfw">June 22, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

このアプリによって日々の不便から開放され，簡単に進捗ツイートを行うことが可能となしました．
幸せですね．

本当はTwitter APIの設定など細かい所の解説をしたいのですが，理解が追いついていないのでこんなところで．