はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【GAS】ラインで送られた画像をGoogleDriveに保存する②

はじめに

先日このような記事を書かせていただきました。

www.hanachiru-blog.com

こちらのコードでも動作するのですが、保存したときにuntitled.jpgみたく名前がちょっとアレになっていました。

なので今回は名前をつけようと思います。

といっても前回のコードに少しだけ足すだけなのでサクッといきましょう。

名前を付ける

var ACCESS_TOKEN = 'LINE Developer画面に表示されているアクセストークン';

function doPost(e) {
    var json = JSON.parse(e.postData.contents);

    if (json.event[0].message.type !== 'image')
        return;

    var url = 'https://api.line.me/v2/bot/message/' + json.events[0].message.id + '/content/';
    var image = getImage(url);

    // ここから変更します
    // 画像の名前を今日の日本時間にする
    var today = new Date(Date.now() + ((new Date().getTimezoneOffset() + (9 * 60)) * 60 * 1000));
    var fileBlob = response.getBlob().setName(today);

    var dir = DriveApp.getFileById("画像を中に入れたいフォルダのID");
    dir.createFile(fileBlob);
    // ここまで変更しました

}

function getImage(url) {
    return UrlFetchApp.fetch(url, {
        "method": "get",
        'headers': {
            'Content-Type': 'application/json; charset=UTF-8',
            'Authorization': 'Bearer ' + ACCESS_TOKEN
        }
    });
}


createFileメソッドの引数の型はGoogleAppScript.URL_Fetch.HttpResponseで前回やってできていましたが、GoogleAppScript.Base.Blobでもいけるみたいですね。

というか後者の方が正しいルートのような気がします。

f:id:hanaaaaaachiru:20191109195221p:plain

さいごに

日本時間の取得するところで変な長いコードにしていますが、一応これには理由があります。

もし気になるかたがいましたら、是非こちらの記事を見てみてください!
www.hanachiru-blog.com