Twitterに自動投稿するbotをGoogle App Scriptで自作する #5

 前回までで、定型文をランダムに投稿するbotと、なんの記念日か投稿するbotを作成しました。今回はそれをさらにアップデートして、画像を投稿できるようにしていきます。

function postTweetMedia(postMessage,fileName){ 

  //画像の取得
  var file_temp = DriveApp.getFilesByName(fileName).next();//GoogleDriveから画像を取得
  var resp = file_temp.getBlob();
  var img_64  = Utilities.base64Encode(resp.getBytes());
  
  var img_option = { 
    'method' : "POST", 
    'payload': {
      'media_data': img_64
    } 
  };
  
  var image_upload = JSON.parse(service.fetch(endPointMedia, img_option)); 
  
  var sendoption = { 
    'status'   : postMessage, 
    'media_ids': image_upload['media_id_string']
  };

  service.fetch(endPointStatus, {method: 'post', payload: sendoption});
  console.log("画像付きでTweetしました。by postTweetMedia");
}

順番に解説します。 

1行目で、関数を定義します。postMessageに投稿する文章を、fileNameに投稿する画像の名前を読み込みます。今回はGoogleDriveのマイドライブに入っている画像を引っ張ってきますのでurlではなく名前のみで大丈夫です。(拡張子は必要です。)

4~6行目で、まず画像を読み込んできます。画像の読み込み方は色々あるのですが、ここでは一番簡単(と思われる)な、GoogleDriveに保存された画像を読み込んでくる手法にしています。

fileNameで指定された画像をgoogleDriveから読み込んできて、img_64に格納します。

8~13行目で、img_optionに画像をpostメソッドで格納しています。

15行目で、画像を読み込んだJSONオブジェクトを変換しています。ここで、JSON.parseメソッドとは、JSON形式で書かれた文字列をJavaScriptのJSONオブジェクトに変換するメソッドです。

17~20行目で、投稿する内容を作成しています。ここに、tweetする文章と画像をそれぞれ格納しています。

22行目で、twitterのサービスに投稿しています。

23行目は完了した際の表示だけです。なくても大丈夫な行です。

コメント