驚くほど簡単な技術系健忘録

驚くほど簡単な技術系健忘録

アプリやWebサービス、RPAを作る上での健忘録を書いていきます。

GoogleSpreadSheetでTwitterのbotを作ってみる

なにはともあれヴィンテージ株式会社さんの解説ページがめちゃくちゃわかりやすい。

Twitter API 第2回 |

Twitter API 第3回 |

Twitter API 第4回 |

あとはQiitaにも載ってました。

qiita.com


ということで

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】の部分を書いていなかったというミスでうまくいかないという罠にもハマったので他の設定値なども気にしたいという方は、是非こちらも参考にしてみてください。

webird-programming.tech