Threads API × 自動投稿の道 〜今はまだ壁の向こう側〜

生成AI

1. やりたかったこと

  • Threadsに自動で投稿したい!
  • 管理のしやすい Googleスプレッドシート に投稿文を一覧化
  • GAS で定期的にその内容をThreadsへ投稿
  • 「予約投稿的に使えたら便利だよね!」

2. やろうとしたこと

  • Meta for Developers でアプリを作成
    • ユースケース:「Threads APIにアクセス」
    • 権限:threads_basic + threads_content_publish
  • Graph API Explorer でアクセストークン取得し
  • GASでPOST → 自動投稿完了✨

3. 最初の壁

Graph API Explorerでアクセストークンを取ろうとした瞬間に…

Invalid Request: ユーザーがアプリテストへの招待を承認しませんでした
error_code: 1349245

4. え、管理者なのに?

Metaドキュメントを読んで、

  • 「開発モードは管理者・開発者・テストユーザーにしか動かせない」
  • 自分は管理者。大丈夫なはず

…なのに、Graph API Explorerでは「テストユーザー招待→承認が必要」と言われる


5. テストユーザーを追加しようとすると…

Meta公式の告知:

「現在新規テストユーザー作成は制限中です」

ブラウザーをアップデートしてください

\(^o^)/


6. 他の方法探す

  • OAuth認証フロー組んで、自分のアカウントでトークン発行? → 結局同じ制限に引っかかる。

7. じゃあApp Tokenは?

  • App Tokenでは投稿できない
    • User Token必須

8. GASのコード自体はほぼ完成してたのに。

スプレッドシートの投稿文をThreadsに投稿する処理、GASで準備できてる。

function postToThreads() {
const accessToken = 'YOUR_ACCESS_TOKEN';
const userId = 'YOUR_USER_ID';
const message = "スプレッドシートから自動投稿!";

const url = `https://graph.threads.net/v1.0/${userId}/threads`;
const payload = {
message: message,
access_token: accessToken
};

const options = {
method: 'post',
payload: payload,
muteHttpExceptions: true
};

const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}

あとはトークンを入れるだけなのに…!


9. 現実:今は「投稿できない」

Metaの制限で完全に詰み。


10. 率直な感想

  • 技術的にはできるところまで来ているのに、Metaの制限で足止め食らってるのがモヤモヤする
  • 仕様の厳しさ・変更がリアルタイムで開発に影響する怖さを痛感
  • やるなら情報キャッチアップと、多少Metaの審査や仕様変更と戦う覚悟が必要

11. この記事を読む人へのアドバイス

  • 今すぐThreads APIで自動投稿やろうとすると、必ず同じ壁にぶつかる可能性大
  • 2025年3月時点ではテストユーザー制限が障害
  • どうしても必要なら公開申請 or 制限解除を見越して準備しておくしかない??