すだちキャンパス

すだちキャンパス

やってみたこと、学んだことなどのメモ。

GAS (Google Apps Script) でTwitterの名前を変更してみた

こんにちは。
GAS(Google Apps Script) を使って Web Service を動かすのに少しハマっています。
というわけで、今回は GAS を利用して TwitterAPIを触ってみました!

GAS でTwitter とやりとりする準備をする

まず、GAS にライブラリを入れます。
GAS の、リソース > ライブラリ から下記のプロジェクトキーを入力して追加します。
1rgo8rXsxi1DxI_5Xgo_t3irTw1Y5cxl2mGSkbozKsSXf2E_KBBPC3xTF
これは、TwitterWebService ライブラリ を使わせていただいております。
次に、Twitter Application ManagementからDeveloper登録をして、Consumer Key (API Key)とConsumer Secret (API Secret) を取得します。
また、この時に、Settings > Callback URLs に、
https://script.google.com/macros/d/プロジェクトキー/usercallback
と入力します。
プロジェクトキーは、GASのページを開いている時のURLの、/d/と/editの間の部分です。↓
https://script.google.com/d/プロジェクトキー/edit?splash=yes
f:id:sweetgohan:20181105190255p:plain

ここまで出来たら、GASに次のコードを追加します。

var twitter = TwitterWebService.getInstance(
  'Consumer Key', 
  'Consumer Secret'  //先ほど取得したものをコピペ
);

function authorize() {
  twitter.authorize();
}

追加できたら、authorize を選択して実行します。
すると、ログにURLが出現しているので、それをコピペしてアクセスします。すると認証画面になるのでログインします。
ログは、表示 > ログ から表示できます。
これでGASからTwitterが使えるようになりました!

参考記事

qiita.com

GAS でTwitter とやりとりする

基本的に、下記のようなコードで色々できるようです。

function post() {
  var service  = twitter.getService();
  var response = service.fetch('対応するURL', {
    method: 'post又はget',
    payload: { 対応するパラメータ }
  });
}

こちらのサイトに、Twitter API のリファレンスなどが分かりやすくまとまっていたので、使わせていただきました。

一応、投稿と名前の変更のコードだけ書いておきます。

//投稿
postTweets() {
  var service  = twitter.getService();
  var postMessage = "にゃんこ";
  var response = service.fetch('https://api.twitter.com/1.1/statuses/update.json', {
    method: 'post',
    payload: { status: postMessage }
  });
}

//名前の変更
var ss = SpreadsheetApp.openById("スプレッドシートのID")
var sheet = ss.getSheetByName('シート1');
var retsu1 = Math.floor(Math.random()*11)+1
var gyou1 = Math.floor(Math.random()*12)+1
var retsu2 = Math.floor(Math.random()*11)+1
var gyou2 = Math.floor(Math.random()*12)+1
var Emoji1 = sheet.getRange(retsu1, gyou1).getValue(); //getRange(number,number) はSheetに対して働く関数
var Emoji2 = sheet.getRange(retsu2, gyou2).getValue();
var postName = Emoji1 + "たけのこごはん" + Emoji2;

function UpdateName() {
  var service  = twitter.getService();
  var response = service.fetch('https://api.twitter.com/1.1/account/update_profile.json', {
    method: 'post',
    payload: { name: postName }
  });
}

ちなみに、今回は名前を挟む絵文字を毎日ランダムで変えようと思ったので、絵文字一覧をスプレッドシートに作って、そこから取得しています。
ただ何故か顔以外の絵文字が正しく取得できなかったので、バリエーションが顔しかありません。
unicodeなどで表示するようにすれば正しく表示されるのかな?と思いましたが、unicodeをどう入力したら絵文字に変換されて表示されるのかがわからなかったため、今回は保留しました。
これでトリガーを日ごとに設定すれば、毎日絵文字が変わります。

感想

GASを使うと、サーバーに関する知識が全くなくてもバンバン動かせてとても楽しいです。
とはいえ、いつかサーバー周辺の勉強もしないとなあ・・・と思っています(どうしたらいんだろう)。
以前 Heroku を使おうとして登録だけして挫折したので・・・いつかまた再挑戦したいと思っています。
ネットワークセキュリティ等にも興味はあるのですが何回も本を読もうとして挫折してるし・・・頑張って学習していつかブログに書きたいですね。

次は、GASを使ってLINE bot を作ったのでそのことについて書きたいと思います。