Google Apps Script

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

GASでTwitterBotを作ろう4

こんにちは、GAS大好きのもり(@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で投稿する機能を先に作っちゃおう!
tweetbot14

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

シリーズ2回目に作成したスプレッドシート(BlogTweetBot)のスクリプトエディタを開きます。

※単純なTwitter Botを作りたい!という方は、任意のGASプロジェクトを作成してください。

tweetbot1

ライブラリの導入

使用するライブラリ▶TwitterWebService.gs

ソースコードはこちらに掲載(GitHubに遷移)されています

リソース→ライブラリを選択
tweetbot2

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

1rgo8rXsxi1DxI_5Xgo_t3irTw1Y5cxl2mGSkbozKsSXf2E_KBBPC3xTF

 

プロジェクトキーを入力して「追加」をクリック
tweetbot3

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

tweetbot4

コールバックURLの登録

コールバックURLとは?

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

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

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

スクリプト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

なぜこのような認証が必要かというと・・・

 

わるいヤツ
わるいヤツ
もりアプリのAPIキーを盗んだぞ!これでもりのTwitterを荒らしてやる、ぐふふ

なんてわるいヤツがいても、「Twitterから本人確認」されるので、個人アカウントのパスワードを知りえない限り、連携できないのです。

tweetbot17-2
わるいヤツ
わるいヤツ
ぐぬっつ!もりのパスワードは知らないな、残念…

連携認証のスクリプト

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

 

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

tweetbot16

それでは認証作業をしていきましょう。

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

tweetbot21

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

tweetbot22

ここで error code 417が出る場合、

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

tweetbot24

コールバックURLに誤りがある可能性が高いです、再度確認してみましょう!

 

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

 

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

tweetbot20

 

GASのログを確認します。

tweetbot23

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

tweetbot10

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

tweetbot19

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

※第三者がアプリを連携しようとした場合、ID・パスワードの入力が求められるので、ここでガードできる仕組みです。

tweetbot11

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

tweetbot12

ツイートのテストをする

もり
もり
いよいよGASでツイートするよ!

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

  • endPointUrl =TwitterAPIにアクセスするためのURI
  • method = リクエストの方法(メッセージを送信するのでPOST)
  • payload = 送信したいデータ

payloadのstatusオプションがツイート本文です。ここを自由に書き換えてください

 

何もエラーが出なければ正常終了です!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回目は、スプレッドシートの記事一覧から、ランダムな行データを取得してツイートするスクリプトを紹介しています。...
非エンジニアもプログラミングを学習する時代!

「プログラミング」ってエンジニアとかプログラマーの人がするものでしょ?文系の私には関係ないや~って思っていませんか?

いまは、非エンジニアもプログラミングを学習する時代です!

「プログラミングの必修化」をご存知ですか?

  • 2020年~ 小学校で開始
  • 2021年~ 中学校で開始
  • 2022年~ 高等学校で開始
  • 2024年~ 高校受験科目に新設

学校での必修化に向けて、すでに子ども向けプログラミングスクールが多数開校されています。

あと数年もすれば、あたりまえにプログラミングができる新入社員がやってくる時代になります。

プログラミングってなに?どんなもの?まずは無料体験から試してみませんか?

 

1週間の無料体験あり!
オンラインスクール実績No.1!