Google Sheetから自動的にツイートする仕組みが超便利なので公開します(後編)

こんにちは。ゆうです。
後編では、いよいよ実際にツールの導入に入っていきます。

前編をまだお読みでない方は、そちらを先にお読みいただけると、後編がより一層楽しめます。

更新情報

----------------------------------------------------
2019-03-04 User is not Authorizedエラーの対処法をFAQに追加
2019-02-21 ツイート分析機能を追加。アップグレード方法は本書の末尾参照。活用方法はこちらを参照
----------------------------------------------------

ご購入者様の声

ご購入者様の声を、一部ですがご紹介させていただきます。

今回導入するツールの機能のおさらい

作成したツールの機能を、もう一度さくっと紹介します。

・自動投稿機能
Google Sheetから自動的にツイートを作成して、毎日決まった時間に一件ずつ投稿する

・連続投稿機能
元のツイートにリプをつなげられる。140文字に収まらないあなたに!

・下書き機能
ステータスがREADYになったツイートしか投稿しない

・RT&Like集計機能
各ツイートのRTとLikeの数を自動で集計してシートに記入。ツイートの分析に便利!

・日時予約機能
ツイートごとに「この日以降にしか投稿しない」日時を指定できる(オプショナル)。季節ネタの投稿に便利!

・フォロワー数トラック機能
毎日のフォロワー数を記録する。一喜一憂したいあなたに!

・お知らせメール機能
ツイート成功時、失敗時、フォロワー数更新時などにお知らせメールを送信する。心配性なあなたに!

・ツイート分析機能(v0.02で追加!)
過去最大3,200件のツイートと、各ツイートのタイプ(通常のツイート、連続ツイート、引用RT、リプライ、RT)、付属情報(ハッシュタグ、ティッカーシンボル、メンション、URLリンク、メディア)の有無とその種別、RT数、Like数を取得し一覧表示

・設定変更機能
各機能の以下の項目は、「設定」シートで簡単に変更可能:
・RT&Like集計期間:RTとLikeの集計を、ツイート後何日間続けるか
・おかわり待ち時間:同じ内容のツイートを再度投稿するまでに、最短何日間あけるか
・Eメールアドレス:お知らせメールの宛先(複数可)
・お知らせメールON/OFF:各お知らせメール送信のON/OFF切り替え
・ツイッターアカウント:フォロワー数の集計及びツイート一覧の取得をする対象のツイッターアカウント
・ツイートテンプレート:ツイートのタイトルや各種見出しの設定

こちらにサンプル用意したので、実際に見てもらうとどんな感じかイメージつかみやすいかと。

Twitterツール(サンプル)v0.02

noteの価格について

こちらのnote、一応有料となっているのですが、本文は全て無料でお読みいただけます。
noteの最後の、Google Sheetへのリンクのみ、有料とさせていただいています。

なので、本文を読んでいただいて、

「あ、これならオイラにもできるかも!」

と思ったら、ご購入いただければと思います。

このツールをオススメしたい人

このツールは、以下のような人に特にオススメです:

ツイッターを語学の勉強に使いたい人
まさにどストライクです。このツールを使って、
単語を人に説明する→人と議論する→何度も繰り返し目にする
ことで、新しく覚えた単語・熟語がすごい勢いで定着します
実際僕はこれを使って日々単語をつぶやきだしてから、目に見えて運用語彙が増えました。

学習系のコンテンツをツイートをしたい人
語学に限らず学習系のコンテンツは毎日定期的にツイートすることが大事なので、このツールはかなり使えると思います。
ツイートの時間や頻度も自由に設定可能です。

ツイッターをデータに基づいて運営したい人
各ツイートの一覧を取得して、どんなツイートが反応が良い・悪いのかということをデータにもとづいて評価し、ツイートの改善をしていくことができます。

プログラミングの勉強をしたい人
Google Sheet + Goole Apps Scriptというのは、プログラミングの勉強をしたい人にとってはかなり良いスタート地点ではないかと思います。
なぜかと言うと、
・無料で始められる
・ユーザーインターフェースはGoogle Sheetが使えるので、内部ロジックの学習に集中できる(画面作らなくていい)で始められる
・GoogleのAPIを使って楽しいことが簡単にできる(メール送るのもコード1行書くだけ)
僕のGoogle Sheetを初めのとっかかりに使ってもらって、自分でいろいろコードをいじれば、プログラミング学習がかなりはかどるんじゃないかと思います。

導入の流れ

まずは全体の流れを示しますね。
ちなみにTwitterアカウントとGoogleアカウントはすでに持っている前提で話を進めさせて下さい。
全体で30分ぐらいになると思います。

※以下、スクリーンショットはv0.01のものを使っているので、画面の文言等、最新版とは一部異なる可能性もありますが、導入には問題無いはずです

Twitter Developerアカウントを取得

Twitter APIを使うために避けて通れない道、Twitter Developerアカウントの取得です。
たぶん今回の中で最大の山場の1つです。
でも大丈夫。以下の流れにそって作業すれば誰でもできます

1. Twitter Developer Platformページにアクセス。英語ですが怖がらないで!

2. 右上の「Sign In」ボタンをクリックして、ツイートしたいツイッターアカウントにログイン。


3. ログインしたら、右上の「Apply」リンクをクリック。


4. 「Apply for a developer account」ボタンをクリック。


5. 「Continue」ボタンをクリック。


6. 「I am requesting access for my own personal use」(個人で利用するためにアカウントを申請しています)を選択し、Developerアカウントのアカウント名と居住国を入力して「Continue」ボタンをクリック。アカウント名は何でもOKです。


7. 用途は、「Chatbots and automation」(チャットBotと自動化)をチェック。


8. 具体的な用途のをテキストで入力するよう求められます。下図の例のように入れておけばOKです。


9. 政府機関にサービス提供するわけではないので、「No」にチェックを入れて「Continue」ボタンをクリック。


10. 規約に同意する旨、チェックを入れて、「Submit application」ボタンをクリック。2つ目のチェックボックスは、もしTwitterから開発者向けのニュース等を受け取りたければチェックを入れて下さい。


11. ツイッターからあなたのメールアドレスに確認メールが届くので、メール内の「Confirm your email」ボタンをクリックしてメールアドレスを認証します。

12. おめでとうございます。無事Twitter Developerアカウントが作成されました。(他の人の解説記事読むと、ここで何日間も待たされるって書いている人もいますが、僕は全く待たされたことないです。上記の手順にきちんと従ってもらえれば、即座にアカウント作成できると思います)

Google Sheetのサンプルをコピー

最大の難所はすでにクリアしました。
あとはお気楽に行きましょう😊。

次のステップでは、僕が作成したGoogle SheetのサンプルをあなたのGoogleドライブにコピーしてきます。

1. このnoteの末尾、有料パートの「サンプルSheetへのリンク」をクリック。

2. メニューバーから、「ファイル」>「コピーを作成」をクリック。


3. ファイル名をつけて、保存場所を選んだら「OK」ボタンをクリック。


4. これで無事、ファイルがあなたのGoogleドライブにコピーされました。
そのファイルをどれだけいじっても、元のファイルには影響を及ぼさないので、安心していじり倒してください。

Project Keyを取得

次に、コピーしたGoogle SheetのProject Keyを取得します。
大丈夫。これもめちゃくちゃ簡単です。

1. メニューバーから、「ツール」>「スクリプトエディタ」をクリック。


2. スクリプトエディタ画面が開くので、メニューバーから「ファイル」>「プロジェクトのプロパティ」をクリック


3. プロジェクトのプロパティウィンドウから「プロジェクト キー」を探し、メモ帳やエディタ等にコピーしておく。これは次のパートでTwitterのAppを登録する際に使用します。


4. 「キャンセル」ボタンを押して、ウィンドウを閉じる。

Twitter Appを作成

次のステップでは、Twitter Developer Platform上で、これから作成するツールをAppとして登録します。
これも簡単です。

1. Twitter Developer PlatformのWelcome画面から「Create an app」をクリック。


2. Appの一覧画面に来るので、右上の「Create an app」ボタンをクリック。


3. Appの詳細入力画面に移ります。「App name」には適当にアプリの名前をつけて下さい。「Application description」は、下図を参考に、このアプリの説明を簡単に書けばOKです。「Website URL」にはツイッターのプロフィールページのURLでも貼っておきましょう。次のステップに続きます。


4. ここではCallback URLを指定します。ここで、先程Google Sheetで取得してメモ帳にコピーしておいたProject Keyを使います。
Callback URLの欄には、以下のようなURLを入力して下さい。

https://script.google.com/macros/d/{Project Key}/usercallback

例えば、Project KeyがABCDだった場合には、Callback URLは

https://script.google.com/macros/d/ABC/usercallback

になります。
「Tell us how this app will be used」欄は、下図を参考にこのアプリの用途を入力しておいてください。
全て入力が終わったら、「Create」ボタンをクリック。


5. 規約を読んで問題なければ「Create」ボタンをクリック。


6. おめでとうございます!無事Twitter Appが作成できました。

Consumer API Keysを取得

次に、いま作成したTwitter AppのConsumer API Keysを取得します。
これは、Twitter Appを呼び出すためのIDとパスワードみたいなものです。
これを、この後のステップでGoogle Apps Scriptの中に入力していただきます。

1. 作成したAppの「Keys and tokens」タブを開く


2. 「API key」と「API secret key」をメモ帳等にコピーしておく。

OAuth認証

それでは、上で集めたConsumer API Keysを使って、OAuth認証をしていきます。
これは何をしているかというと、要するにGoogle Sheetに対して、あなたのツイッターアカウントを使ってツイートしてもいいよという許可を与えています。
それでは行きましょう!

1. スクリプトエディタを開く。もし上のステップで閉じてしまっていたら、先ほどコピーしてきたGoogle Sheetのメニューバーから「ツール」>「スクリプトエディタ」で開けます。

2. もしTwitter.gsが表示されていなければ、左のスクリプトリスト(Twitter.gs、Main.gs、GSheet.gsが並んでいるところ)からTwitter.gsをクリックして開く。


3. 下図の赤四角内に、Project Key、API Key、API Secret Keyを入力する。
注意!
ダブルクォーテーションマークで囲まれた内部だけを編集して下さい。ダブルクォーテーションマークは消さないように注意して下さい。

4. メニューバーから「ファイル」>「保存」をクリック。

5. 「関数を選択」ドロップボックスから、「twitterAuthorizeUrl」を選択し、プレイボタン(▶️)をクリック。


6. この後いくつか確認メッセージが表示されますが、下記例に従って確認していって下さい。


7. 関数の実行が完了したら、メニューバーから「表示」>「ログ」をクリック。

8. ログに表示されたURLにアクセスする。


9. 「Authorize app」ボタンをクリック。


10. おめでとうございます!あなたは無事認証に成功しました。


スケジュール登録

最後のステップです。
ツイートやフォロワー数のカウントを定期的に実行するために、それぞれのタスクのスケジュールを登録します。
以下では例として、Google Sheetから1行ピックアップしてツイートする「tweetFirst」という関数を、毎朝7時から8時の間に起動するようにしてみます。

1. スクリプトエディタのツールバーから、時計アイコンをクリック。


2. 右下の「トリガーを追加」ボタンをクリック。トリガーとは、何らかのアクションを起こすきっかけになるものです。ここでは、「毎日ある時間に」なることをきっかけに、「ある関数(タスク)を起動する」というアクションを起こしています。


3. 下図のように設定を変更し、「保存」ボタンをクリック。


4. これで、「tweetFirst」という関数が、毎日7時から8時のどこかの時間で、自動的に実行されるようになりました。この関数を実行中にもし何らかの予期せぬエラーが発生した場合には、即座にgメールに通知されます。

下表の例を参考に、他の関数のスケジュールも登録してみましょう。

注意!
Google Apps Scriptの自動実行には、1日毎に上限が設定されています。
これはGoogleアカウントの種類によって異なりますが、通常の無料アカウントであれば1日90分までとされています(詳しくはGoogleのガイドを参照)。
普通に使っている分にはこの制限を気にする必要はあまりありませんが、「各関数を1分おきに起動」みたいなことをすると、たぶん制限にひっかかります
また、countAllActivitiesは、ツイート数が増えてくるとそれなりに時間がかかるので、この関数の実行頻度はあまり上げ過ぎない方がいいです
もしこの制限に達してしまっても、スクリプトエディタから手動で各関数を起動することは可能です。

以上でツールの設定は全て完了です。
それでは実際に使っていきましょう!

各シートの説明

このツールは、以下の5つのシートから構成されています:
・設定: 各種の設定を行うシートです。
・リスト: メインのシート。ツイートの内容を記入していく。各ツイートのステータス、RT&Like数などもここで見られます。
・フォロワー数: 日時とフォロワー数が自動的に記録されます。
・ツイート一覧: 過去のツイートの一覧を取得できます。それぞれのツイートのタイプ(通常、連ツイ、引用RT、リプ、RT)と詳細情報(ハッシュタグ、ティッカーシンボル、メンション、URLリンク、メディア)とRT&Like数も見られます
・ツイート分析: ツイート一覧のピボットテーブルです。

「設定」シート

このシートでは、以下のようにツールの各種の設定を行うことができます。

・RT&Like集計期間 [日]:RTとLikeは、理論的にはツイート後永久に増え続ける可能性はありますが、たいていはどこかで頭打ちになります。ここでは、ツイート後何日間、RTとLikeの数を更新し続けるかを設定できます。ここの期間が長いほど集計に時間がかかるようになります。個人的には10日ぐらいで十分なんじゃないかと思っています。

・おかわり待ち時間 [日]:あるツイートを投稿してから同じ内容を再度ツイートするまでに、最短何日間待つかを設定できます。

・Eメールアドレス:このツールからのお知らせメールを受け取るEメールアドレスです。空欄にしておけばメールは送信されませんが、設定しておくことをお勧めします。カンマ区切りで複数のEメールが設定できます。

・ツイート成功時のお知らせメール
:ツイートが成功した際に、下図のようなお知らせメールを送信するかどうかを設定できます。

・ネタ不足時のお知らせメール:投稿できるツイートが見つからなかった際に、下図のようなお知らせメールを送信するかどうかを設定できます。

・エラー発生時のお知らせメール:エラーが発生した際に、下図のようなお知らせメールを送信するかどうかを設定できます。

・フォロワー数お知らせメール:フォロワー数を記録した際に、下図のようなお知らせメールを送信するかどうかを設定できます。

・ツイッターアカウント:フォロワー数をトラックするツイッターアカウントです。不要であれば空欄でかまいません。

・ツイートテンプレート:ツイートの下記項目を設定できます。「おかわりタイトル」は、同じ内容を2回めに投稿するときに使用されるタイトルです。


注意! 設定シートの行名について
設定シートの行名は、スクリプトの中で使用しているので変更しないでください(スクリプトも併せて変更すればOK)。
ただし、「英語見出し」、「説明見出し」、「例文見出し」、「例文訳見出し」の4行については、スクリプト内で使用していないので行名を変更しても問題はありません。

「リスト」シート

続いては、サンプルツイートを準備しながら、メインとなる「リスト」シートの使い方を説明していきます。

1. 「英語」、「説明」、「例文」カラムを埋めると、「設定」シートで設定したテンプレートに従って、「ツイート1」カラムにツイートが生成されます。また、そのツイートの文字数(半角換算)が「文字数1」カラムに表示されます。


2. 続いて「例文訳」カラムを埋めると、同じくテンプレートに従って、「ツイート2」カラムにツイートが生成され、「文字数2」カラムにその文字数(半角換算)が表示されます。このツイートは、ツイート1に対するリプライとして投稿されます。
ツイート2はオプショナルなので、「例文訳」カラムに何も入力しなければツイート2は投稿されません。


3. ツイートの準備ができたら、「ステータス」カラムを「READY」にしてください。これで投稿準備完了です。
次回、関数「tweetFirst」が実行されたとき、ステータスが「READY」となっている投稿のうち、一番上にあるものがツイートされます。
また、オプショナルで「予約日時」カラムに日時を入れておくと、そのツイートはその日時までは投稿されません。季節ネタの投稿などに便利です。


4. 予約時間が来るのを待ってもいいのですが、時間がもったいないので手動で関数を呼び出してしまいましょう。
メニューバーから「Twitter」>「ツイート」をクリックすると、「tweetFirst」関数が起動されます。
ツイートが成功すれば、
・「ステータス」が「POSTED」に変わり、
・「ツイート日時」に現在時刻が入り、
・「ツイートID1」と「ツイートID2」が入り、
・ツイート成功お知らせメールがあなたのメールボックスに届き、
・該当するツイートがあなたのツイッターアカウントから投稿されている
はずです。


5. この後は、設定した時間になればツイートのRTとLikeの数が更新され、「おかわり待ち時間」で設定した日数が経過した後はランダムで以前のツイートが再度投稿されます。

「リスト」シートの補足事項

見出し行の色について
ちなみにですが、見出し行は以下のように色分けされています:
:人間が入力する列です。
オレンジ:Goole Sheetの関数によって自動入力されます。うっかり関数を消してしまわないように注意して下さい。(一応範囲保護してあります)
グレー:スクリプトによって自動入力されます。

ツイートテンプレートのカスタマイズについて
それぞれのツイートの文言は、スクリプトではなくGoogle Sheetの関数で生成しています。
スクリプトは、「ツイート1」カラムと「ツイート2」カラムを見て投稿しているだけで、「英語」、「説明」、「例文」、「例文訳」カラムはスクリプトからは一切参照していません
なので、その4つのカラムのカラム名等は自由に変更していただいてかまいません。
「ツイート1」、「ツイート2」カラムの関数を好きなように変更して自分独自のテンプレートでツイートを作成することも可能です。

ツイート文字数について
このシートに表示している文字数は、あくまで参考値と考えて下さい。
ツイッターが全角文字(特に記号など)をどのようにカウントしているのかがいまいち不明確で、このシートに表示される文字数とツイッターでカウントされる文字数とでは、たまに差が生じます(シートの文字数の方が大きくなります)。
シート上で282文字(全角140文字)と表示されても、大抵の場合、ツイッター上では280文字ちょうどになります。
なので、282文字を超えたら修正する、ぐらいの運用がいいかなと。
文字数オーバーしても、すぐにエラーメールが飛んでくるので、そのときに直してもらえばまあ大丈夫です。

「フォロワー数」シート

このシートについてはほぼ説明は不要かと思います。
日時、フォロワー数、前日との差分が並んでいて、隣にメモ欄があるだけのシンプルな造りです。
メモ欄にはその日にバズったツイートなどをメモしておくと、あとで「この日は何でこんなにフォロワー数伸びたんだろう?」みたいに分析するときに便利です。

「ツイート一覧」&「ツイート分析」シート(v0.02で追加)

自分(もしくは他人でもOK)の過去のツイートを、最大3,200件取得して「ツイート一覧」シートに一覧出力します。
「ツイート分析」シートは、「ツイート一覧」シートのデータをピボットテーブルとグラフで表示しているだけです。
具体的な活用方法はこちらを読んでいただくとして、ここではツイート一覧の取得方法だけを説明します。

自分のツイートを取得する場合
1. 「設定」シートの「ツイッターアカウント」欄にツイートの一覧を取得したいアカウントが入力されていることを確認。

2. メニューバーから「Twitter」>「ツイート取得」をクリック。

3. 「○○件のツイートを取得しました!」というポップアップが表示され、「ツイート一覧」シートにツイートの一覧が出力されます。

ちなみに、上記のステップ2で「ツイート取得(RT含む)」をクリックすると、RT(コメント無しのリツイート)も含めた全ツイートが取得されます。

他人のツイートを取得する場合
1. メニューバーから「Twitter」>「他人のツイート取得」をクリック。

2. 表示されるダイアログボックスに、ツイートを取得したいツイッターアカウントを入力。

3. 「○○件のツイートを取得しました!」というポップアップが表示され、「ツイート一覧({アカウント名})」シートにツイートの一覧が出力されます。上記の例だと、「ツイート一覧(INGLE729)」シートに出力されます。ちなみに同名のシートが存在する場合には、「ツイート一覧(INGLE729) (1)」のように、末尾に連番が付与されます。

ちなみに、上記のステップ1で「他人のツイート取得(RT含む)」をクリックすると、RT(コメント無しのリツイート)も含めた全ツイートが取得されます。

このツイート一覧の活用方法については下記のnoteにまとめてあるので、ぜひご覧ください!もちろん無料です!

前バージョンからのアップグレードの仕方

ここでは、前バージョン(v0.01)を既に導入済みの方を対象に、前バージョンからのアップグレードの仕方を説明します。
バージョンアップ後にご購入された方や、以前購入していたもののまだ導入していなかった方は、普通にこちらのnoteの説明に従って導入して下さい。

基本的なやり方
1. サンプルファイルをコピー。以降、このファイルを単にサンプルと呼びます。


2. サンプルの「ツイート一覧」シートを、以前のバージョンのワークブックにコピー。コピー後、シート名を「ツイート一覧のコピー」から「ツイート一覧」に戻しておく。


3. サンプルの「ツイート分析」シートも同様にして、以前のバージョンのワークブックにコピーし、シート名を「ツイート分析のコピー」から「ツイート分析」に戻しておく。

4. 以前のバージョンのワークブックでスクリプトエディタを開く。


5. Twitter.gsを開き、下図の赤枠で囲った3行だけメモ帳等にコピーしておく。

6. サンプルでもスクリプトエディタを開く。

7. GSheet.gs、Main.gs、Twitter.gsそれぞれについて、サンプルから以前のバージョンに、ファイルの内容を全てコピペ。

8. ステップ5でメモしておいた赤枠の3行を、Twitter.gsにコピペし直す。

9. メニューバーから「Twitter」>「ツイート取得」をクリックし、無事取得できればアップグレード成功です。

FAQ

Q1. おかわりって何?
A1. 以前投稿して、ある程度時間がたったツイートを、再度自動的に投稿してくれる機能です。英単語は一度覚えても忘れてしまうので、忘れた頃にまた再度ツイートすることで記憶の定着が図れます。

Q2. おかわりはもとのツイートと全く同じ内容なの?
A2. ツイート冒頭のタイトルは「設定」シートで変更可能です。

Q3. おかわりは1回だけなの?
A3. 現在は1回だけの仕様になっています。要望が多ければそのうち機能追加します。

Q4. おかわり使いたくないんだけど?
A4. スケジュール設定画面で関数「tweetSecond」のスケジュールを全て削除してください。一時的に停止したいだけなら、「設定」シートで「おかわり待ち時間」を3,000日ぐらいにしておけば、向こう10年ぐらいはおかわりされません。(ただしこの場合には「おかわりのネタが無いよ?」というアラートメールが毎回送信されてうっとうしいので、「ネタ不足時のお知らせメール」もOFFにしておいた方がいいです。)

Q5. ツイート1とツイート2(リプ)がある場合、RTとLike数はどっちのものなの?
A5. ツイート1とツイート2(リプ)の合計です。

Q6. 毎日決まった時間じゃなくて、ツイートごとに指定した日時にツイートしたいんだけど?
A6.  以下のような設定と使い方をすれば可能です。
スケジュール設定
・tweetFirst: 5分に1回
・tweetSecond: 削除
「設定」シート
・ネタ不足時のお知らせメールをOFFにする
「リスト」シート
・「予約日時」カラムにツイートしたい日時を記入

ちなみにこの設定で「予約日時」カラムを空欄にすれば、「ステータス」カラムがREADYのツイートが5分に1回、上から順にツイートされていきます。

Q7. ツイートに誤字あったから、ツイート削除してもいい?
A7. 大丈夫ですが、その場合には「リスト」シートのツイートID欄も忘れずに消しておいてください。RT&Like数の集計時に問題が起きる可能性があります。

Q8. Twitter Developer PortalでAppを新規作成しようとしたら、「User is not Authorized」って出て作れないんだけど?
A8. ツイッターアカウントに電話番号が登録されてないのが原因らしいです。 https://twitter.com/settings/phone で電話番号の登録を確認して下さい。

サンプルファイルへのリンク

この続きをみるには

この続き:304文字

Google Sheetから自動的にツイートする仕組みが超便利なので公開します(後編)

ゆう

500円

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

note.user.nickname || note.user.urlname

いただいたサポートは娘のおむつ代に大事に使わせていただきます!

ありがとうございます!うれしいです!
24

ゆう

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。