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);
これを実行して、文字だけのツイートをして楽しもう。
そして、問題の画像のみを投稿する方法。[この記事](https://qiita.com/pekko1215/items/43ef98d99ab186bd67a7)を参考にしながら、必要な部分だけ切り出した。
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内でのファイル名の衝突とかはたぶん、このあたりでなんとか解決してください。
以上。