【GAS】Twitter API V2 でweb上の画像をつけてツイートを実装する(2023年)

  1. 画像付きツイートの実装方法がわからない。
  2. V2を使って画像付きツイートをする方法を知りたい。

今回は、このような人に向けて、記事を書いています。

twitter API V2に仕様が変更されたことで、画像付きツイートをする方法も少し変わっています。

今回は、twitter V2を使ってweb上の画像をつけてツイートをする方法を解説していきます。
Twitter API を利用しての自動化を考えている方にはピッタリの内容になるかと思いますので、ぜひ最後まで読んでいってください!

本記事の目的

twitter API V2で画像付きツイートができるようになる!

【前提】テキストのみのツイートはできている

今回の記事では、すでにテキストのみでのツイートはできている前提で進めていきます。

もし、まだテキストのみでのツイートができてない!という方がいらっしゃいましたら、
以下記事を参考に実装を進めてみてください。

あべべ

こちらの記事でも、Twitter API V2を用いて実装しています!

では、ここからは、テキストでのツイートが完成している方のみ、読み進めていってください!

画像付きツイートをするまでの流れ

まず、画像付きのツイートをするまでの全体の流れを説明します。

実装までの全体の流れ

①Twitter APIと連携認証 ※最初の実装時のみ

②画像をアップロードし、IDを取得する 

③画像付きでツイートする

テキストツイートをV2でするときに、認証をしたかと思います。

しかし、画像付きのツイートをするときは、標準V1.1を利用して一度画像をアップロードしてから、IDを取得してV2でツイートするという流れが必要になります。

以下では、全体の流れに沿って順番に説明していきます。

Twitter API と連携認証する

Twitter API V1.1 と連携認証をします。

Twitter Web Serviceライブラリを追加

連携認証をするために、まず TwitterWebService というライブラリを使います。

左のライブラリから以下IDを検索してください。

ID

1rgo8rXsxi1DxI_5Xgo_t3irTw1Y5cxl2mGSkbozKsSXf2E_KBBPC3xTF

認証を得る

GASに新しいファイルを作成し、以下コードをコピペしてください。

//認証用インスタンスの生成
var twitter = TwitterWebService.getInstance(
  '<API KEY>',//API Key
  '<API SECRET KEY>'//API secret key
);

/*
*twitterAPI 1.1 との連携で使用
*/

//アプリを連携認証する
function authorize() {
  twitter.authorize();
}
 
//認証を解除する
function reset() {
  twitter.reset();
}
 
//認証後のコールバック
function authCallback(request) {
  return twitter.authCallback(request);
}

API KEY と SECRET KEY の取得場所

①まず、以下URLから Developer Portal へログインしてください。
※ツイートしたいアカウントにTwitterでログインしてからアクセスしましょう!!

https://developer.twitter.com/en/portal/dashboard

②Projects & Apps の中のプロジェクトを選択します。

上タブの「Keys and tokens」を選択します。

③Consumer Key のところで確認できます。

では、ここまでできたら、GASで認証を得るために実行をします。

GASで実行する関数を、authorize に合わせて、実行してみてください。

ログに、アクセスするURLが指示されます。

それをコピーして、アドレスバーにコピペしアクセスします。

twitterの許可を与えるかを確認する画面が出てくるので、許可を与えましょう。

最後に、Success画面が出てきたら、認証完了です!!

画像をアップロードし、IDを取得する

では、認証が取れたので、実際に画像をアップロードして、IDを取得します

以下のコードをコピペしてください。

function test_tweet(){
  //web上の画像のURLを記載する。
  let imgUrl = "https://www.example.jp/img/product/example.jpg"

  var imgBlob = UrlFetchApp.fetch(imgUrl).getBlob();
  var img_64  = Utilities.base64Encode(imgBlob.getBytes());
  var service = twitter.getService();

  var img_option = { 
    'method' : "POST", 
    'payload': {
      'media_data': img_64
    } 
  };
  var endPointMedia  = 'https://upload.twitter.com/1.1/media/upload.json';

  var image_upload = JSON.parse(service.fetch(endPointMedia, img_option));
  console.log(image_upload['media_id_string'])
}
あべべ

imgUrl の部分は、適当なURLになってます。

自分で、取得したい画像のURLを貼り付けておいてください!

では、貼り付けた関数を実行してみましょう。

すると、実行ログに、写真のIDが出力されるはずです。

これが、写真のIDになります。このIDを用いて、tweetを行っていきます。

Google ドライブ上の画像ファイルをアップロードしたい場合

Googleドライブ上の画像ファイルをアップロードしたい場合は、URLを貼り付けるだけだとうまく行きません

URLに一手間加える必要があります。

Googleドライブ上に保存してある画像を使いたい場合は、次のようにしてください。

【ステップ1】共有権限を全員にする

画像をアップロードしたい、フォルダ、ファイルの共有権限を「リンクを知っている全員」にします。

【ステップ2】URLを加工する

アップロードしたい画像ファイルのリンクをコピーしてください。

コピーしたリンクは次のようになっているはずです。

https://drive.google.com/file/d/<ファイルID>/view?usp=drive_link

このファイルIDの部分を、以下URLのファイルIDの部分に置き換えてください。

https://drive.google.com/uc?export=view&id=<ファイルID>

あべべ

ここまでできたらGドライブ上のファイルをアップロードできるURLができました。

このURLを、先ほどのコードの「imgUrl」に置き換えてください!

実行してみると、IDが取得できるはずです!

画像付きでTweetする

先ほどの章で、画像をアップロードし、IDを取得できました。

ここでは、テキストのみでツイートしていた部分に画像をつけていきます。

テキストのみでツイートしている場合、以下のように、payloadの中に、テキストを入れている部分があるのではないでしょうか。

var payload = {
    "text": tweet,
  }

この部分に、画像のIDを入れていきます。

var payload = {
    "text": tweet,
    "media": {"media_ids": [<ここに画像のIDを入れる>]},
  }

<ここに画像のIDを入れる>の部分をIDに置き換えてあげてください。

その他の部分は変更する必要はありません!!

この部分のコードの全体がみたい方は以下の記事に書いてありますので、覗いてみてください。

最後に、画像付きのツイートができたら完成です!!

まとめ

今回は、web上の画像を使って、ツイッターに画像付きのツイートをする方法を解説しました。

ツイート自動化をするときには、気を配るべきはツイートの内容です。中身を充実しない限り伸びることはありません。

ぜひ、自動化だけでなく、中身にも気を配っていくとさらに良いものになっていくでしょう!!

では、また。

(Visited 651 times, 1 visits today)