Google Apps Script

Google Apps ScriptでTwitterに投稿するスクリプト(GAS×TwitterBot④)

GASでTwitterBotを作ろう4

こんにちは、もり(@moripro3)です!

「Google Apps ScriptでTwitterBotを作ろう!」をシリーズでお届けします。

 

このシリーズで作るのは「自分のブログからランダムな1記事を取得して、タイトルとURLを、毎日指定の時刻に自動ツイートするBot」です。

 

※GASでTwitterに投稿する機能だけを作りたい方へ

この記事は連載シリーズの第4回目ですが、シリーズを全部読まなくても、第1回目の記事+この記事だけ読めば投稿機能が作れるようになっています!

 

シリーズの前回は、IFTTTを使用して、新規投稿記事の「タイトル」と「URL」をスプレッドシートに自動で追記する仕組みを作りました。

GASでTwitterBotを作ろう3
IFTTTでブログの新規記事のタイトルとURLをスプレッドシートに追記する(GAS×TwitterBot③)GoogleAppsScriptを使ってTwitterBotを作ろう!シリーズ第3回目は、IFTTTを使って、ブログの新規投稿記事のタイトルとURLをスプレッドシートに自動で追記する仕組みを作ります!...

 

全体の流れがこちらです。この記事ではStep4を紹介します。

GAS×TwitterBotの5ステップ
  • 【Step1】Twitter Developerアカウントの申請(済)
  • 【Step2】アプリ情報を登録してAPIキーを取得する(済)
  • 【Step3】ブログ記事の一覧をGoogleスプレッドシートに作成する(済)
    • ①WordPressの既存記事の一覧をCSV出力する
    • ②新規投稿記事のタイトルとURLをスプレッドシートに追記する仕組みを作る(IFTTT使用)
  • 【Step4】GASでTwitterに投稿するスクリプトを作る ← 今回はコレをやるよ
  • 【Step5】GASでスプレッドシートのデータを取得してツイートする

こちらのサイトを参考にさせていただきました!
Google Apps Script (GAS) でTwitterへ投稿するだけの機能を実装してみる

GASでTwitterに投稿するスクリプトを作成する

このBotシリーズで作るのは「スプレッドシートのデータを取得してツイートする機能」ですが、「早くGASでツイートしてみたい!」って人が多いと思うので、

まずは、GASでTwitterに投稿する処理を作っちゃいます!

tweetbot14

記事一覧のスプレッドシートを開く

シリーズ2回目に作成したスプレッドシート(BlogTweetBot)のスクリプトエディタを開きます(すでにお使いのスプレッドシートがある場合は、それを使用してください)

tweetbot1

※この記事で紹介するスクリプトは、V8ランタイムでは動作しません。V8ランタイムに切り替わっている場合は、無効にしましょう。

スクリプトエディタで「実行」→「Chrome V8を搭載した新しい Apps Script ランタイムを無効にする」をクリック。

ライブラリの導入

「TwitterWebService.gs」というライブラリを使用します(ソースコードはこちらに掲載(GitHubに遷移)されています)

 

「リソース」→「ライブラリ」を選択します。

tweetbot2

 

下記のプロジェクトキーをコピーして「ライブラリを追加」の欄に貼り付け、「追加」をクリックします。

1rgo8rXsxi1DxI_5Xgo_t3irTw1Y5cxl2mGSkbozKsSXf2E_KBBPC3xTF

tweetbot3

 

最新のバージョンを選択して「保存」します(※2019年3月時点ではバージョン2)

tweetbot4

Developerサイトのアプリに「コールバックURL」を登録する

コールバックURLとは?

  • コール = 呼び出す
  • バック = 戻す

 

これから作るのは「GASでTwitterに投稿するスクリプト」で、「Twitterにログイン認証する」という処理が裏で行われます。

Twitterでログイン認証が終わったら「このURL」に戻してね、というURLを指定します。

GASのスクリプトIDの確認

コールバックURLには、GASプロジェクトのスクリプトIDが必要です。先に確認しておきましょう。

「ファイル」→「プロジェクトのプロパティ」を開きます。

tweetbot26

 

スクリプトIDを確認します。アルファベットと数字が組み合わさった長い値です。

tweetbot27

アプリに「コールバックURL」を登録する

Twitter Developerサイトにアクセスして、作成済みのアプリを開きます。

画面右上のアカウント名 → Appsをクリック

tweetbot5

 

アプリの「Details」をクリックします。

tweetbot6

 

「Edit」→「Edit details」をクリックします。

tweetbot7

 

Callback URLsの「+Add another」をクリックします。

tweetbot8

 

コールバックURLの形式がこちら。スクリプトIDの部分に、さきほど確認した値をあてはめます。

https://script.google.com/macros/d/スクリプトID/usercallback

 

URLを入力したら保存を忘れずに!

tweetbot28

 

Twitter Developerサイトの画面は次の工程でも使うので、そのまま開いておきましょう。

アプリの連携認証をする

Twitter Developerサイトで作成したアプリをGASで使用するには、アプリの連携認証が必要です。

 

連携認証とは、下記の2つを紐づける作業です。

  • Twitterの個人アカウント(私の場合、moripro3)
  • Twitter Developerサイトで作成したアプリ(私の場合、blog_notify_bot)

 

「blog_notify_botというアプリがmoripro3の名義でツイートすることを許可しますか?」という確認です。

下記①~③のステップで認証します。

tweetbot18

連携認証のスクリプト

連携認証はスクリプトで実行します。GASのエディタに入力してください。

 

3,4行目のAPIキーは、Twitter Developerサイトの「Keys and tokens」の値をセットします。

tweetbot16

認証ステップ①Twitterに認証を依頼する

tweetbot21

 

関数authorize()を実行します。

tweetbot22

 

※ここで error code 417が出る場合、コールバックURLの登録が誤っている可能性があります。再度確認してみましょう!

Error starting OAuth flow: <?xml version=”1.0″ …

tweetbot24

何もメッセージが表示されなければ正常終了です!

認証ステップ②本人確認のURLが発行される

tweetbot20

 

GASのログを確認します。

tweetbot23

 

ここに認証URLが出力されています。丸ごとコピーして、ブラウザのURL欄に貼り付けてアクセスします。

tweetbot10

ステップ③パスワードを入力して認証する

tweetbot19

 

Twitterのパスワードをブラウザに保存している場合は、ID・パスワードの入力は求められません。「連携アプリを認証」をクリックします。ブラウザにID・パスワードを保存していない場合は入力が必要です。

tweetbot11

 

ブラウザにSuccessと表示されれば、連携の認証は完了です。

tweetbot12

ツイートのテストをする

それではGASでTwitterにツイートを投稿してみましょう!

スクリプトがこちら。postTweet関数を実行すると、ツイートできます。

 

各変数の意味は下記のとおり。

  • endPointUrl = TwitterAPIにアクセスするためのURI
  • method = リクエストの方法(メッセージを送信するのでPOST)
  • payload = 送信データ ※statusオプションがTwitterに投稿される文字列です

 

何もエラーが出なければ正常終了です。Twitterを確認しましょう!

tweetbot29

シリーズ第4回目のまとめ

おつかれさまでした!全5ステップのうち、Step4までが完了しました!

GAS×TwitterBotの5ステップ
  • 【Step1】Twitter Developerアカウントの申請(済)
  • 【Step2】アプリ情報を登録してAPIキーを取得する(済)
  • 【Step3】ブログ記事の一覧をGoogleスプレッドシートに作成する(済)
    • ①WordPressの既存記事の一覧をCSV出力する
    • ②新規投稿記事のタイトルとURLをスプレッドシートに追記する仕組みを作る(IFTTT使用)
  • 【Step4】GASでTwitterに投稿するスクリプトを作る(済)
  • 【Step5】GASでスプレッドシートのデータを取得してツイートする ← 次回はコレをやるよ

さて次回は最後の仕上げ、スプレッドシートのデータを取得してTwitterに投稿する処理を作ります。

GASでTwitterBotを作ろう5-2
【GAS】スプレッドシートのランダムな行データを取得してツイート(GAS×TwitterBot⑤)GoogleAppsScriptを使ってTwitterBotを作ろう!シリーズ第5回目は、スプレッドシートの記事一覧から、ランダムな行データを取得してツイートするスクリプトを紹介しています。...