【GAS修行⑤】Qiitaの新着トレンド報告で高意識・高成長BOTをLINE Notifyで作成

【GAS修行⑤】Qiitaの新着トレンド報告で高意識・高成長BOTをLINE Notifyで作成:

・GAS熟練者への道。

・先人達のコードの「写経&コピー」の駆使の成果物のまとめ。

・第五弾

第一弾第二弾第三弾第四弾はこちら。


経緯

・「五回目。」

・「他人依存術卒業を視野に入れる回数になったのか。とは微塵も感じず、今回も駆使していこう。」

・「そうだ。学習アピールできる高意識アプリを作ろう。」

→そういうわけで、今回もサンプルアプリと仏様サイトを発見。
https://qiita.com/uhooi/items/7ae555b5bf05c92fff74

→「今回は参考(マルコピ)プラス独自性も加味しよう。」

→「これのLINE版作成をしてみるか。」

→取り組み開始。


概要

  • 一日二回、Qiitaの新着トレンド記事をLINEに通知してくれる。

    →最新の動向把握アピールの材料になる。


結果

・実際の画面はこちらです。



image.png



作成環境

  1. Google App Script
  2. LINE Notify


手順

※Google Apps Script、LINE Notifyの設定は第一弾第四弾と一緒


Google Apps Scriptの設定

  • Googleドライブからスクリプトエディタを起動。

    ※Googleアカウントを持っていない人は、作成する。

    • Googleドライブを起動
    • 「新規」→ 「その他」→「アプリを追加」の順にクリック。
    • アプリ検索欄に「script」と入力して検索。
    • 検索結果に「Google Apps Script」が表示されるので、そこの「接続」ボタンをクリック
    • 改めて「新規」→ 「その他」の順にクリックしていくと、「Google Apps Script」が表示されているので、クリック。
  • 起動したプロジェクトに名前をつける

    ※プロジェクト名が反映されるわけではないが、自分がわかる名前をつける。

    →保存されたら一旦置いておく。


LINE Notifyの設定

  • LINE Notifyのトークンを発行。


    • LINE Notifyにアクセスして、自分のLINEアカウント情報でログイン。
    • ログイン後、マイページを開く。
    • マイページ内の「トークンを発行する」ボタンをクリック
    • 「トークン名」「通知先のトークルーム」を設定する。
    • 設定後、「発行する」ボタンをクリックして、トークンを発行。
    • 発行されたトークンをコピーして、控えておく。
  • LINE Notifyを設定したトークルームに招待する。


ライブラリ設定

  • スクリプトエディタに戻り、上部メニューの「リソース」から「ライブラリ」をクリック。
  • 「ライブラリを追加」欄にM1lugvAXKKtUxn_vdAG9JZleS6DrsjUUVと入力。
  • 「タイトル」にParser と表示されるので、「バージョン」を最新(現段階では7)にして、「デベロッパーモード」をONにして、保存する。

    ※Parserとは、HTMLの解析に役立つライブラリ。
    image.png
    image.png


コード

  • スクリプトエディタ内のコードに、下記を記述する。
line-tommorow-calendar.gs
// 「lineToken」を自分のLINE Notifyのアクセストークンに置き換える 
var lineToken = "LINEアクセストークンを書く。"; 
// QiitaのURL 
var QIITA_BASE_URL = 'https://qiita.com' 
var QIITA_TRENDS_URL = 'https://qiita.com/trend' 
 
// トレンド通知(新着記事のみ) 
function qiitaNew() { 
  var message = [] 
 
  var html = UrlFetchApp.fetch(QIITA_TRENDS_URL).getContentText() 
  var items = Parser.data(html).from('{"followingLikers').to('}}}').iterate() 
  for (var i = 0; i < items.length; i++) { 
    var isNewArrival = items[i].match(/isNewArrival":(.+?),/)[1] 
    // 新着記事のみ対象 
    if (isNewArrival == 'false') { 
      continue 
    } 
    var name = "\n★" + items[i].match(/title":"(.+?)",/)[1] + "\n" 
    var uuid = items[i].match(/uuid":"(.+?)",/)[1] 
    var urlName = items[i].match(/urlName":"(.+?)"/)[1] 
    var link = QIITA_BASE_URL + '/' + urlName + '/items/' + uuid + "\n" 
    /* メッセージ */ 
    message.push(name,link) 
  } 
  // メッセージ整形(カンマ削除のため。) 
  var lineMessage = message.join(""); 
  sendToLine(lineMessage); 
} 
 
// LINE送信処理 
function sendToLine(lineMessage){ 
  var token = lineToken; 
  var header = "\n本日の調査報告(*^^*)\n"; 
  var options = 
   { 
     "method"  : "post", 
     "payload" : "message=" + header + lineMessage, 
     "headers" : {"Authorization" : "Bearer "+ token} 
   }; 
   UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); 
} 
※以下の項目を自分のものに変えるのを忘れない。

   ・LINE Notifyのアクセストークン(先程メモしたもの。)

  • 自分のコードに書き換えて保存後、「qiitaNew」関数を実行して、通知確認。

    • スクリプトエディタ内の上部メニューの「関数名」の部分を「qiitaNew」に変更して、二つ左の「▶」ボタンで実行。

  • 通知確認後、指定の時間にコードを実行してもらうために、トリガーを設定。

    ※記事更新のタイミングは、5時/17時の二回



    • スクリプトエディタのタブメニューの「編集」→ 「現在のプロジェクトのトリガー」をクリック。
    • トリガーを作成して、下記の画像のように設定。
      image.png

      image.png

    • 保存。
  • 完了。


まとめ

・今まで通りマルコピはもちろん、ほんのちっぽけな応用もできた。

・これで、俊足な動向もしっかり見逃さずに、かつ記録できる。

・これを見てくださるエンジニアの皆様、「こういう情報収集もできたら、更にステージ上がれるぞ」「これで満足してるのか。所詮この程度か」という意見等あれば、是非教えていただけると幸いです。


参考

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2024-02-12 22:08:06 RSSフィード2024-02-12 22:00分まとめ(7件)