9
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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内でのファイル名の衝突とかはたぶん、このあたりでなんとか解決してください。

以上。

9
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?