Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

GASでTwitterに画像を投稿するだけ

Google Apps Scriptで画像を投稿したいのに、検索方法が悪いのか、なんなのかわからないが、全然サンプルコードが出てこない。公式リファレンスを読むのも(全ページ英語なので)面倒くさい。ということで、メモ用に投稿しておく。


まず、ご存知の通り、このAPIは非推奨(廃止?)になった。
var url="https://api.twitter.com/1.1/statuses/update_with_media.json";
参考:https://teratail.com/questions/98359


次に、とりあえずこの辺をコピペしてスクリプトを作る。(認証方法が変わっている件についてはこのへんが詳しい)
※サポート関数は使う予定がなければコピペする必要なし

Twitter.gs
//ツイートする
var option = { "status":"ツイート本文" };
var resp = Twitter.api("statuses/update",option);

これを実行して、文字だけのツイートをして楽しもう。



そして、問題の画像のみを投稿する方法。この記事を参考にしながら、必要な部分だけ切り出した。

Twitter.gs
var file_name = 'ファイル名(拡張子を忘れずに)'; 
var file_temp = DriveApp.getFilesByName(file_name).next();//GoogleDriveから画像を取得

var resp = file_temp.getBlob();
var resp_64 = Utilities.base64Encode(resp.getBytes());//Blobを経由してBase64に変換

var img_option = { 'method':"POST", 'payload':{'media_data':resp_64} };
var image_upload = JSON.parse(Twitter.oauth.service().fetch("https://upload.twitter.com/1.1/media/upload.json",img_option)); 
var sendmsg = "ツイート本文を入力"; 
var sendoption = { 'status':sendmsg, 'media_ids':image_upload['media_id_string']} ;//オプションに突っ込む

Twitter.api('statuses/update',sendoption);//送信 

画像ファイルは予めGoogleDriveにアップロードしておくこと。

GoogleDrive内でのファイル名の衝突とかはたぶん、このあたりでなんとか解決してください。

以上。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
10
Help us understand the problem. What are the problem?