89.楽天roomなどの自動化に向けた実践的取り組みの話
なんか便利にならないかなぁーって日々考えてると、職場の嫌な反芻が軽減される気がしてきます。
書籍や商品などの紹介を自動で投稿とか出来ないかなぁ~
じゃっ、ちょっとやってみっか!!
でも、、、どーやって!?
全く分からん!!
AIさんに聞くか。から始まりました。
なんだろー。
プログラミングの知識とかほとんどないんですけど、指南ゼロ、頼みの綱はAIさんだけという環境で、、、まぁなんとかなった!!
試行錯誤の連続でしたが、自動投稿化をやってみたっていうカンジですかね。
ホントに何やってるかさえ分からなかった&なかなか通らなくて、個人的にはケッコー大変でしたので、AIさんとまとめとこうかなと思います。
【完全版?】Twitter API v2 × OAuth2.0認証 × GAS自動投稿の超実践ガイド
【導入文:知識ゼロでもできた話】
Twitter APIって、なんか難しそう……。 GAS(Google Apps Script)って、名前からしてハードル高そう……。 そもそも認証って何? OAuth2.0ってどの口が言うの?
そんな状態からスタートして、気づけばAIさんと相談しながら試行錯誤で、自動ツイート連携までやり遂げました。
もちろん最初から最後までエラー祭りの連続でした笑
「認証コードが取れない」
「クライアントIDってどれ?」
「👁マーク押しても見えないんだけど!?」
と、意味不明なことの異世界ワールド。
でも、
「Twitterのアカウントを“自動有効化”モードにして」
「クライアントIDを正しく差し替えて」「PKCEのしくみをちょっとずつ理解して」――。
ぜんぶ、AIさんに聞きながら、**コードも、認証フローも、URLの書き換えも、なんとか自力でできたよって話です。それだけAIさんが進化してるってコトですね!知れただけでもスゴイことなのかなーと。
この記事でわかること
Twitter API(v2)を使ってGASで自動ツイートする方法
面倒そうなOAuth2.0(PKCE)の認証を失敗例つきで解説
実際の手順・コード・つまづきポイントを、初心者視点でカバー
最終的に「Success!」までたどり着くためのガイドライン
想定読者様
Twitterの投稿を自動化したい人(定期ツイートなど)
ノーコード/ローコードでSNS活用したい個人事業主・クリエイター
GASやAPIに興味はあるけど、途中でいつも挫折しがちな人
AIさんに聞きながらでも作業できる人(ここが重要)
この先は「つまずきながらもゴールできる」実録ドキュメントです。
しくじりの記録こそ、成功の近道。
あなたも“Success!”の画面にたどり着けますように。
1. はじめに
このnoteでは、2025年6月時点での実装記録となります。
Twitter API v2と**OAuth2.0 認証(PKCE対応)**を使って、Google Apps Script(GAS)からTwitter自動投稿を行うまでのステップを、つまずきやすいポイントを徹底的に解説します。
2. 必要な準備(前提条件と概要)
Googleアカウント(GASを使うため)
Twitter開発者アカウント
PCブラウザ(Chrome推奨)
メール認証/電話番号認証済みTwitterアカウント
3. 開発者アカウントの作成
Twitter Developer Portal にアクセス
新規アカウントを作成(Googleログインでも可だと思います。できなくて、Googleログインアカウントにて新規作成→自動アカウント設定をしました。)
電話番号の登録が必要(注意:認証直後は48時間制限あり。なかなか出来なかった理由のひとつかも。)
4. アプリケーションの作成と設定
Twitterアプリケーションの作成と設定になります。
Developer Portalの"Projects & Apps"から新規作成
"OAuth2.0"を有効にして、以下を設定:
Callback URL(例):https://script.google.com/macros/d/<your-script-id>/usercallback
Redirect URI:同上
Scopes:tweet.read, tweet.write, users.read, offline.access ※←これも上手く出来なかった
クライアントIDとクライアントシークレットを控える
5. 認証の全体像
OAuth2.0認証の全体像
① 認可コード取得 → ② トークン交換 → ③ APIアクセス必要なキーワード:
code_challenge と code_verifier(PKCE)
client_id / client_secret
redirect_uri
client_id / client_secretについては
コピー等をして控えるコトをオススメします。
6. ID・パスワードの取得
正確には、クライアントIDとそのシークレットの取得となります。
Twitter Developer Portalで作成したアプリを開く
OAuth2.0セクション → クライアントID/シークレットを表示
👁(目のアイコン)をクリックしてシークレットを表示
※見えない場合は別ブラウザで開いて試す(EdgeやFirefoxなど)←これもシークレットされすぎ問題でブラウザを変更して試すという発想に至るまで時間がかかってしまいました。
7. 認可コードの取得(手動でブラウザから)
以下のURLを整形してブラウザに貼り付け:
https://twitter.com/i/oauth2/authorize?
client_id=<クライアントID>&
redirect_uri=<リダイレクトURI>&
response_type=code&
scope=users.read%20tweet.read%20tweet.write%20offline.access&
state=任意の文字列&
code_challenge=<生成したcode_challenge>&
code_challenge_method=S2568. トークンの取得
認可コードを受け取ったら、以下のPOSTリクエストでアクセストークンを取得:
POST https://api.twitter.com/2/oauth2/token
Content-Type: application/x-www-form-urlencoded
client_id=...&
grant_type=authorization_code&
code=...&
redirect_uri=...&
code_verifier=...9. 連携
GASと連携して自動投稿する方法になります。
function postTweet(message) {
const token = '取得済みのアクセストークン';
const url = 'https://api.twitter.com/2/tweets';
const options = {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: 'Bearer ' + token,
},
payload: JSON.stringify({ text: message }),
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}10.出来たかどうか調べるには
テストプレイってやつをやっていきます。
スプレッドシートの準備とそのログ化をしました。私はになりますが、、、。
「自動で投稿できた!……で、あれ、ちゃんと投稿された?確認したいよね?」
そんなときこそ、Googleスプレッドシートの出番です。
GASとスプレッドシートを連携すれば、自動投稿した内容やAPIから取得したツイートを記録として残すことができます。
これは後から見返したり、エラーのチェックをしたり、再利用したりと、かなり便利な技です。
🔧 スプレッドシートを準備しよう
まずは手動でスプレッドシートを作ります。
Googleドライブを開く
「新規」→「Googleスプレッドシート」
ファイル名を「Twitterログ」とでもしておく
最初の行(1行目)に以下のように見出しをつけておくとGood:
A列:投稿日時 B列:ツイート内容 C列:APIレスポンス
📌 GASでシートに書き込むコード
ツイート内容をシートに記録するには、以下のようにします。
function logTweetToSheet(text, apiResponse) {
const sheetId = 'あなたのスプレッドシートのID'; // URLの /d/ と /edit の間にあるやつ
const sheet = SpreadsheetApp.openById(sheetId).getActiveSheet();
const time = new Date();
sheet.appendRow([time, text, apiResponse]);
}
🧪 実際のツイートと組み合わせてみよう
例えば、以下のようにすれば、ツイートして、その内容と結果をスプレッドシートに記録できます。
↓このへんは、自分がどうしたいのかで大きく変わってくると思います。
根気よくAIさんに
あーしたい、こーしたいって言ったり
どこが間違ってるの?と質問したりで、なんとかなりました!
参考↓
function postTweetWithLog() {
const token = '取得したアクセストークン';
const endpoint = 'https://api.twitter.com/2/tweets';
const text = "これはGASからの自動ツイート+スプレッドシート記録です!";
const payload = JSON.stringify({ text: text });
const options = {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: `Bearer ${token}`,
},
payload: payload,
};
const response = UrlFetchApp.fetch(endpoint, options);
const result = response.getContentText();
Logger.log(result);
// 記録する
logTweetToSheet(text, result);
}
💡 スプレッドシートのIDはどこ?
スプレッドシートのURLがこうなっていたとします:
https://docs.google.com/spreadsheets/d/1AbCDefGhIjKLmnopQrStUvWxYz1234567890/edit#gid=0
この場合、1AbCDefGhIjKLmnopQrStUvWxYz1234567890 が スプレッドシートID です。
これを SpreadsheetApp.openById("ここ") に入れましょう。
自動で投稿するには時間指定などのトリガーも忘れずに!
トリガーってなんやねん→AIさん助けて~という流れで笑
スプレッドシート→拡張機能→Apps Scriptです。
✨ 応用アイデア
予約投稿の一覧をシートに並べておき、自動で順番に投稿
ツイートの反応(いいね数、RT数)を定期的に記録して分析
ChatGPTで生成したツイート文をシートにまとめるAI日報Bot化
11. エラーQ&Aと試行錯誤の全記録(実録)
👁でクライアントシークレットが表示されない?→ 別ブラウザを使う
403 Forbidden?→ Scopeやパーミッション不足かも
Success画面出たのに動かない?→ リダイレクトURLに注意!などなど
この章では、実際に私がAIさんに聞きながら、Twitter API連携やGASの自動化を進めていく中で出くわした「詰まりポイント」と、それに対する解決法をまとめます。
これは**想定外のトラブルや詰まりポイントをどう乗り越えたか?**という「実録」です。
“自分もこうやってつまずいたら、これを見ればいいんだ”という、リアルな手引きです。
❓Q1:もしかして、電話番号認証してないと先に進めないの?
A:はい、その通りです。
Twitter APIの利用には、電話番号認証済みアカウントが必須です。
❓Q2:「48時間は電話番号登録できない」って言われたんだけど? 詰んだ?
A:これはTwitter側の仕様です。
新規アカウントは、作成から48時間経たないと電話番号を登録できません。
そのため、すぐにAPI認証に使いたい場合は既存アカウントを使うか、48時間待つしかないです。
❓Q3:「そもそもOAuth2.0 認証ってなんだ?」とか「Twitter API v2」「Google Apps Script(GAS)」など基本用語がわからない…
A:chatGPTに聞けばOK。用語の意味をざっくり把握する程度で大丈夫。
作業の中で出てくる用語は、都度検索 or chatGPT に聞くのが一番効率的です。
❓Q4:ネットワーク部とホスト部って何だっけ? クラスは?
A:IPアドレスの構成の話。細かく理解しなくても実装には問題なし。
とはいえ、chatGPTにざっくり聞けば5行くらいで要点を教えてくれます。
❓Q5:新しくアカウント作って、「自動化」という設定を有効にしたけど、それでいけるの?
A:はい、それでいけます。
Twitter APIは「自動化用途」を明示すれば、開発者申請が通りやすくなります。
→ "Automate personal tweets and logging" などと記載。
❓Q6:「電話番号はクリアした」後、どうしたらいい?私は今なにやってんの?
A:Twitter開発者ポータルから、アプリを登録 → OAuth2を有効にする。
その際、リダイレクトURIやスコープの設定を丁寧に。
❓Q7:「この前作ったやつのクライアントIDを書き換えるだけでいける?」ってどういう意味?
A:基本的には、同じスクリプトを使ってクライアントID/シークレットを差し替えるだけでOK。
ただし、Twitter側での設定もきちんと整えておく必要あり。
❓Q8:「新しく作ったアカウントの開発者画面を出すってこと?」とは?
A:はい。新アカウントで Twitter Developer Portal にログインし、そこでアプリ登録。
必要な情報(client_id / client_secret など)はこの画面で取得。
❓Q9:👁マークを押してもクライアントシークレットが見えない…
A:ブラウザによっては見えないことがあります。
別ブラウザ(例:Chrome → Firefoxなど 私はEdge)を試すと、ちゃんと表示されることが多いです。
❓Q10:ぶっちゃけ、どのID・パスワードを使うの?
A:GASスクリプトに埋め込むのは以下:
client_id
client_secret
redirect_uri
scope
code_challenge_method
code_challenge
❓Q11:URL叩いたけど、そこで止まる…
A:「Success!」と出るまでやる。
それが表示されれば、トークン取得に成功している証拠です。
✅ 実録ログ抜粋
「👁押したけど見えない」 → 別ブラウザで確認して突破
「電話番号が48時間登録できない」 → 一時詰み状態をAIさんに相談
「クライアントIDの貼り付け場所が不明」 → スクリプトに貼り付ける位置を教えてもらって突破
「Success!」表示に歓喜 → トークン取得成功報告
12. 販売ライセンスと著作権について
このnoteの内容はすべて私とAIさん(だからやや怪しいですが)での一次経験に基づきます。
商用利用・再配布はモラルの範囲内でお願いできたらと。
リンクや一部引用は自由ですが、無断全文転載はご遠慮いただければと思います。
13. おわりに
私とAIさんの時間と脳を削って構築したTwitter認証、自動投稿までのすべてのステップが、このガイドに詰まっています。
これだけでワンタッチで設定完了!ちゃんちゃんとはいかないかもしれませんが、根気よく調べながらやったり、試行錯誤すれば、知識ゼロの私でも出来たので、なんとかなると思います。
そして、より良いものも出来て、さらなる発展も期待できると、私はそう信じています。というか、AIさんが答えてくれている時点でお察しです。
自動化できないかなという発想が、何にでも応用がききそうな気がしています。
ただ、知識ゼロの私にはハードルが高かったので、AIさん様々でした!!
特にGAS × Twitter API × スプレッドシートは最強タッグは、正直使えなくなってしまうかも分かりません。
この連携ができると、いよいよ“ちょっとしたWebサービス”みたいな雰囲気になります。
しかも、全部 無料のGoogleサービスで完結 するのが魅力です。
このnoteが、同じように困っている誰かの助けになれば幸いです。
最後に、これが実際にできたやつです↓
リンクも貼っておいたので、画像をタップ(クリック)すれば飛べると思います。

↑ログインしないと見れないんですね。
#AIとやってみた
いいなと思ったら応援しよう!
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!