teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook
-
Upload
shohei-tai -
Category
Technology
-
view
740 -
download
5
Transcript of teratailで秒速回答を目指す - GoogleAppsScript + SlackWebhook
teratailで秒速回答を目指す
泰昌平 @ShoheiTai
自己紹介
泰昌平スパイスファクトリー株式会社
メディアインテグレーション事業部 事業部長
・平成生まれ
・ペチパー。CakePHP, Phalcon, CMSなど
・フロントエンドの開発、最適化が好き
・趣味はダーツとバイク
・最近鞄の中はChromebookと財布だけ
最近の悩みごと
なかなか回答ができていない・・・
皆さんすごいです...!
なぜ回答ができていないか
● teratailを開く頻度が少ない
● PHPやjavascriptなどの質問はスピード勝負
● 新規の質問にすぐ反応できない
teratailを定期的に開こう!
Pythonで5分に1度teratailを開く
import threading
import webbrowser
def teratail():
webbrowser.open('https://teratail.com')
t = threading.Timer(300, teratail)
t.start()
if __name__ == '__main__':
t = threading.Thread(target = teratail)
t.start()
jsで5分に1度teratailを開く
setInterval(() => {
window.open('https://teratail.com');
}, 300 * 1000);
(function teratail() {
window.open('https://teratail.com');
setTimeout(teratail, 300 * 1000);
})();
もう少し情報を絞り込めたら・・・?
APIとか…
teratail API
本日使うもの
質問をSlackで通知する
1. GoogleAppsScriptでteratailAPIにアクセス
2. 任意のタグから新着の質問を取得
3. SlackWebhookAPIで通知
4. GoogleAppsScriptの設定で定期的に実行
実装してみる
事前に用意するもの
● teratailAPIのアクセストークン
● Slack IncomingWebhookのURL
● Googleアカウント
teratailAPI
指定したタグの質問を最新のものから数件取得する。
※アクセストークンはマイページから取得
SlackWebhookのURLを取得
GoogleAppsScript
● サーバサイドで動作するjavascript
● GoogleAppsと連携した処理が実装可能
● ブラウザ上で実装、実行できる
● トリガーの設定で定期実行もらくらく
● Chromebookにやさしい
GoogleAppsScript - リクエスト
function request(url, options) {
var response = UrlFetchApp.fetch(url, options);
return response.getContentText('UTF-8');
}
UrlFetchApp.fetch()でHTTPリクエストを発行で
きる。
GoogleAppsScript - teratailAPI
// 指定したタグの質問を取得する
function getQuestionByTagName(tagName, params) {
var token = '*********';
var url = 'https://teratail.com/api/v1/tags/' + tagName + '/questions/';
if(params) {
url += '?' + queryString(params);
}
var result = request(url, {
headers: {Authorization: 'Bearer ' + token}
});
return JSON.parse(result);
}
GoogleAppsScript - SlackWebhook
// SlackWebhookにリクエストを投げる
function requestSlack(payload) {
var url = 'https://hooks.slack.com/services/*********';
var result = request(url, {
method : 'POST',
payload : JSON.stringify(payload)
});
return result;
}
GoogleAppsScript - トリガ設定
GoogleAppsScriptの画面から、このスクリプトのトリガを設定し定期実
行させる。
Slackへ通知
最後に
● GoogleAppsScriptが便利すぎた
● SlackもteratailもAPIの設定が非常に簡単
● 各々手軽に扱えるので相性はかなり良い
THANKS!Any questions?You can find me at✘ facebook: shouhei.tai✘ Twtter: @ShoheiTai
Credits
Special thanks to all the people who made and released these awesome resources for free:✘ Presentation template by SlidesCarnival✘ Photographs by Unsplash