GoogleSpreadSheetでTwitterのbotを作ってみる
なにはともあれヴィンテージ株式会社さんの解説ページがめちゃくちゃわかりやすい。
あとはQiitaにも載ってました。
ということで
OAuth1.0のライブラリ(1CXDCY5sqT9ph64fFwSzVtXnbjpSfWdRymafDrtIZ7Z_hwysTY7IIhi7s)をリソースとして追加して。
var API_KEY = 'API_KEY'; var API_SECRET = 'API_SECRET'; /* サービスの設定 */ function getService() { return OAuth1.createService('Twitter') .setAccessTokenUrl('https://api.twitter.com/oauth/access_token') .setRequestTokenUrl('https://api.twitter.com/oauth/request_token') .setAuthorizationUrl('https://api.twitter.com/oauth/authorize') .setConsumerKey(API_KEY) .setConsumerSecret(API_SECRET) .setCallbackFunction('authCallback') .setPropertyStore(PropertiesService.getUserProperties()); } /* コールバック関数 */ function authCallback(request) { var service = getService(); var authorized = service.handleCallback(request); if (authorized) return HtmlService.createHtmlOutput('認証成功'); } /* 認証リセット */ function reset() { getService().reset(); } /* 認証用URL */ function getOAuthURL() { Logger.log(getService().authorize()); } /* リクエスト */ function request1(text) { var service = getService(); if (service.hasAccess()) { var url = 'https://api.twitter.com/1.1/statuses/update.json'; var payload = { status: text }; var options = { method: 'post', payload: payload, escaping: false }; var response = service.fetch(url, options); var result = JSON.parse(response.getContentText()); Logger.log(JSON.stringify(result, null, 2)); return result; } } function send1() { request1("テスト送信します。"); }
こんな感じで最低限のbotができます。
また、以下の感じで検索機能を追加することも可能です。
//検索 function Search(text) { var service = getService(); if (service.hasAccess()) { var baseurl = 'https://api.twitter.com/1.1/search/tweets.json'; var q = encodeURIComponent(text); var url = baseurl + "?q=" + q + "&lang=ja&result_type=mixed&count=5&include_entities=true"; var options = { method: 'get' }; var response = service.fetch(url, options); var result = JSON.parse(response.getContentText()).statuses; return result; } }
なお、私はTwitter Developperのアプリ登録の際にCallback URLの登録を
Callback URL(コールバックURL)→https://script.google.com/macros/d/[プロジェクトキー]/usercallback
としないといけないのに、最後の【/usercallback】の部分を書いていなかったというミスでうまくいかないという罠にもハマったので他の設定値なども気にしたいという方は、是非こちらも参考にしてみてください。