どーも、ゆはです。
昔作ったSplatoon2の人気ツイートをリツイートするBOT(@FavSpl)がなぜか動かなくなっていました。。。
原因を調べてみると、なぜか昔作ったプログラムが削除されている。。
消した記憶全くないのですが、間違って消してしまったのかも。。
ということでSplatoon3版で作り直そうと思いますが、昔作ったものなので、いろいろと忘れてしまっていました。。
備忘録と同じようにTwitterBOTを作りたい人向けに作り方書いてみます。
プログラム経験がなくても割と簡単に作れるように解説していきたいと思います。
ざっくり手順
今回は以下のようなBOTを作成することを目的にします。
- 1時間に1回「#splatoon3」のツイートを検索
- もっとも「いいね」が多いツイートをリツイート
BOT作成までの流れはざっくり以下のような感じです。
- BOT用のTwitterアカウントを作成
- TwitterDevelopersアカウントを作成
- GASでBOTのプログラムコードを作成する
- GASでスケジューラで実行する
今回の記事では3でテストツイートするところまで書きます。
BOT用のTwitterアカウントを作成
BOTにするTwitterアカウントを作成します。
Twitter公式ページからアカウントを作成しましょう。
TwitterDevelopersアカウントを作成
Twitter developersのページにアクセスします。
Twitterにログインしている場合はすでにログイン済みだと思いますが、未ログイン状態になっている場合はログインしましょう。
ログイン後は右上のSignUpボタンを押してPortalページに移動します。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-18.12.44-1024x542.png)
プロジェクトの作成
ダッシュボードからプロジェクトの作成ボタンを押します。
(作成前のスクショ取り忘れていてたのですが、下の画像の箇所にボタンがあったと思います)
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-18.17.01-1024x414.png)
画面に従ってプロジェクトを作成していきます。
プロジェクト名やアプリ名は適当な名前に置き換えてください。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.29.16-934x1024.png)
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.29.27-937x1024.png)
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.32.12-938x1024.png)
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.32.27-940x1024.png)
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.32.41-935x1024.png)
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.33.04-934x1024.png)
最後にAPI KeyとSecret情報が表示されるので後で使うので必ずコピーしておいてください。
ここでしか情報がみれないため、コピーし忘れると再発行しないといけなくなるます。
GASプロジェクトの作成
GoogleAppScriptのページを開き、「新しいプロジェクト」を作成します。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-18.51.35-1024x410.png)
左下の歯車アイコンを押して、スクリプトIDをコピーしてください。このあとの「User authentication settingsの設定項目」に使います。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-18.52.54-1024x426.png)
「User authentication settings」の設定
次に、「User authentication settings」の設定を行います。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.50.15-1024x259.png)
requiredの項目を入力していきます。
App infoの項目は以下の設定値を記載してください。
CallbackURL
https://script.google.com/macros/d/[GASのスクリプト ID]/usercallback
WebsiteURL
https://twitter.com/[twitterID]
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.53.01-1024x792.png)
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.53.10-1024x803.png)
ここまでできれば、設定は完了です。あとはGoogleAppScriptでコードを書くだけでTwitterBotを利用できます。
GoogleAppScriptにプログラムを書く
GoogleAppScriptにプログラムコードを書けばBOTを動かすことができます。
コピペすれば動くようにサンプルコードを載せておきます。
API KeyとAPI secret Key はあなたの値を入力してください。
//認証用インスタンスの生成
var twitter = TwitterWebService.getInstance(
'{あなたのAPI Key}',//API Key
'{あなたのAPI secret key}'//API secret key
);
//アプリを連携認証する
function authorize() {
twitter.authorize();
}
//認証を解除する
function reset() {
twitter.reset();
}
//認証後のコールバック
function authCallback(request) {
return twitter.authCallback(request);
}
// ツイートを投稿
function postTweet() {
var service = twitter.getService();
var endPointUrl = 'https://api.twitter.com/2/tweets';
var message = {
text : "test",
}
var options = {
"method": 'post',
"muteHttpExceptions" : true,
'contentType': 'application/json',
//messageをJSONの形式に変換。投稿に必須
'payload': JSON.stringify(message),
}
var response = JSON.parse(service.fetch(endPointUrl, options));
//リクエスト結果
console.log(response)
}
TwitterWebService ライブラリ の導入
このままだと動かないのでTwitterWebServiceライブラリを追加します。
画面左側のメニューに「ライブラリ」という項目があるので、こちらからライブラリを追加します。
ダイアログが表示されるので、「1rgo8rXsxi1DxI_5Xgo_t3irTw1Y5cxl2mGSkbozKsSXf2E_KBBPC3xTF」を入力してライブラリを追加します。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-19.05.12.png)
認証からテストツイートの投稿まで
「authorize」を選択して「実行」します。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-19.08.25-1024x76.png)
コンソール画面に以下のようなURLが表示されるので、コピーしてブラウザで開いてください。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.56.15-1024x209.png)
2つ以上のTwitterDeveloperアカウントでエラーが出る場合はこちらの記事が参考になるかもです。
TwitterのOAuth認証画面が表示されるので、画面に従って許可します。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.56.33-1024x873.png)
ここまでできたら認証は完了です。
テストツイートができるか確認してみましょう。
「postTweet」を選択して「実行」します。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-19.13.47-1024x75.png)
コンソールには以下が表示されます。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-16.56.59-1024x164.png)
どうやら成功してそうな雰囲気!!
実際に投稿されたかTwitterを確認します。
![](https://yuhabeem.com/wp-content/uploads/2022/12/スクリーンショット-2022-12-31-17.35.58-1024x179.png)
無事投稿されていました!!!
とりあえずTwitterAPIを利用できるようになったので、次回は具体的なプログラムを書いて動かそうと思います。
今回はここまでです。
最後までお読みいただきありがとうございました。
続きの記事はこちら
参考にさせていただいたサイト
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU1JTg4JTlEJUU1JUJGJTgzJUU4JTgwJTg1JUUzJTgxJThDR0FTJUUzJTgyJTkyJUU0JUJEJUJGJUUzJTgxJUEzJUUzJTgxJUE2VHdpdHRlciUyMEJvdCVFMyU4MiU5MiVFNCVCRCU5QyVFMyU4MSVBMyVFMyU4MSVBNiVFMyU4MSVCRiVFMyU4MSU5RiVFRiVCQyU4OCVFMyU4MiVCMyVFMyU4MyVCQyVFMyU4MyU4OSVFMyU4MiU4MiVFMyU4MSU4MiVFMyU4MiU4QiVFMyU4MiU4OCVFMiU5OCU4NiVFRiVCQyU4OSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9N2Y5NDFhMDE5ZjdiY2MyYTEwNTRlMTI0NzBmYjUyZjY&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwa2FnYXdha2Vuc2FuJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1kNmE2NmE5ZWZhOGZiZjMzNGExYTNmZmJlZDZkZTZlNg&blend-x=142&blend-y=491&blend-mode=normal&s=c89702c6cdc0086a2dae31bd0d58d8ab)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9R29vZ2xlJTIwQXBwcyUyMFNjcmlwdCUyMCUyOEdBUyUyOSUyMCVFMyU4MSVBN1R3aXR0ZXIlRTMlODElQjglRTYlOEElOTUlRTclQTglQkYlRTMlODElOTklRTMlODIlOEIlRTMlODElQTAlRTMlODElOTElRTMlODElQUUlRTYlQTklOUYlRTglODMlQkQlRTMlODIlOTIlRTUlQUUlOUYlRTglQTMlODUlRTMlODElOTclRTMlODElQTYlRTMlODElQkYlRTMlODIlOEImdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTQ3NTVhNWJhYjZiZTJjNmNkZjU2MmY2M2YwODc5MGUw&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwYWtrZXkyNDc1JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1jMjYxMjI2OGJhNjA5NTM4YmI1NTY4MTExYzU5ZGJmNA&blend-x=142&blend-y=491&blend-mode=normal&s=669047671a69b482e7d7f694a5720a98)