Calendar・RSS編)業務改善モバイルアプリエンジニアの山下です。Script(以下、GAS)を利用した自動化をしています。GASとは、クラウド上でスクリプトを実行できるサービスです。スプレッドシートをはじめ、Googleが提供している色々なサービスと連携することができます。外部のサービスでも提供されているAPIを利用して操作することができるため幅広い用途で使えます。今回は以下の3つの活用方法を紹介したいと思います。CalendarのスケジュールをChatWorkに投稿する毎朝、前日分のRSSをChatWorkに投稿するGmailの本文から値を取得してスプレッドシートに書き込むこの操作は、Fabricのデイリーサマリーを集計するスクリプトで扱っています。Fabricの管理画面では、Crashlyticsなどの情報が過去90日間しか遡れないためスプレッドシートへ書き溜めるようにしています。スクリプトの処理の流れは以下です。事前にGmailで対象のメールにラベルを付ける必要があります。日付と値をスプレッドシートの最後に書き込み取得したメールを既読に変更それでは実装方法を紹介していきます。Gmailから未読のFabricのデイリーサマリーのメールを取得Gmailを操作するにはGmailAppクラスを使います。スレッドを取得するメソッドはいくつか存在しますが、今回は未読を条件に含めたいためsearchメソッドを使います。取得したスレッドは配列になっているため、ループを回して取得します。スレッドからはgetMessagesメソッドでメッセージ(メール)を取得できます。メールから日付と本文中にある特定の値を取得メッセージも配列で渡されるので同じようにループを回して取得します。メッセージに対してはgetPlainBodyメソッドでHTML要素を除いたbodyの文字列を取得できるため、今回はこれを利用して値を取得します。message.getPlainBody();取得したbodyの文字列から正規表現で特定の値を抜き出します。抜き出したい文字列は以下のようになっています。▲0.1%上の形に対応した処理をメソッド化して、以下のように取得します。日付と値をスプレッドシートの最後に書き込みここまでで日付と値は取得できたので次にスプレッドシートへ書き込みます。取り扱うスプレッドシートを取得します。スプレッドシートの取得方法には2パターンあります。本記事では触れませんが別途ツールを使うことでGASもバージョン管理ができます。そのツールを使う場合は、対象のスクリプトが他サービスと紐付いていない必要があるため、後々管理をする予定であれば紐付けない実装することをおすすめします。話が逸れましたが、次にスプレッドシートの最後の行に書き込みを行います。これはappendRowメソッドを使うことで最後の行の計算を行わず、純粋に追記することができます。最後にメッセージに対してmarkReadメソッドを呼んで、メールを既読にします。message.markRead();}全体コード全体コードを載せておきます。必要な箇所を書き換えればそのまま使用できます。}最後にトリガーをセットすることで、毎日自動でスプレッドシートが更新されます。CalendarのスケジュールをChatWorkに投稿するエンジニアチームでは、リモート勤務や半フレックスタイム制で始業時間を柔軟に調整できる環境となっています。そのため、対面での朝会は行わず、当日のタスクやスケジュールは始業後にChatWorkの専用のチャンネルへ投稿するようにしています。Calendarに数日後のタスクを予め書き込んでいるため、それを元に自動で投稿するようにしています。スクリプトの処理の流れは以下です。事前準備ChatWorkを利用する方はAPIトークンが必要です。Tokenをコピーします。Calendarを操作するにはCalendarAppクラスを使います。getEventsForDayメソッドで指定日のイベントを取得できます。内容を確認(MTGや業務時間外スケジュールを除く)MTGや在宅勤務などのイベントは共有しないため除外します。上で取得したイベントは配列になっているため、ループを回して個別に取得します。getTitleメソッドでイベントのタイトルを取得し、除外キーワードが含まれているか確認します。ChatWork用に投稿内容を加工ChatWorkへは、以下の形式になるように投稿します。イベントはもちろん時系列になっているので、文字列を追加するだけです。最後にChatWorkへ投稿します。事前準備したAPIトークンと投稿先のチャンネルIDをセットします。options);全体のコード上記の処理に加え、休日と時間の判定を加えた全体コードを貼ります。false;}以上でトリガーを設定することで毎朝自動でチャットが投稿されます。毎朝、前日分のRSSをChatWorkに投稿するエンジニアはそれぞれ方法で情報収集をしていますが、チャットへ流すことで話題となり話が膨らみやすくなったり、個人の収集媒体ではキャッチアップできなかった場合に備えて情報を抑えやすい環境にしています。RSS用のURLをスプレッドシートに書き込むことで、毎朝GASで前日分の記事を取得してChatWorkへ投稿されます。スクリプトの処理の流れは以下です。IDもsheetから取得しようと思います。事前準備まず、スプレッドシートに必要な情報を書き込みます。ChatWorkを利用する方はAPIトークンが必要です。前節でAPIトークンを取得済の方はそのまま使いまわせます。Tokenをコピーします。スプレッドシートから読み込みgetRangeでセルを指定し、getValueで値を取得します。sheet.getRange("B2").getValue();次にURLを取得します。A列5行目以降を全て読み込みます。読み込んだ後は不要な配列を削除するために一手間加えています。RSS取得RSSの取得はfetchPostAtYesterdayメソッドで行います。URLが不正だったり、アクセスに不具合が生じるとエラーになるためtry-catch文で制御します。'YYYY-MM-dd');}RSS取得の処理は以下の記事を参考にさせていただきました。Scriptを組み合わせて、RSSのBOTを作ってみる。例のごとく、読みやすいように加工していきます。今回は以下のように投稿します。最後にChatWorkへ投稿します。前節を参考にしてください。全体のコード上記に加え、はてなブックマーク数の取得しています。options);}最後にトリガーを設定します。以上で毎朝、前日分のRSSを一覧で投稿されるようになります。最後に簡単なサービスの連携であればIFTTTやZapierで十分ですが、GASのハードルも高くないので運用してみてはいかがでしょうか。08:30Tweet関連記事2018-11-30Node.jsでGoogleスプレッドシートを操作するWebエンジニアの川辺です。botの返事をカルーセル形式にしてみましたフロントエンドエンジニアの岡田です。botを作った話フロントエンドエンジニアの岡田です。1検索はてなブログをはじめよう!lcl-engineerさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。