この記事でGASとLINEで作る家計簿をご紹介していますが、そこにグラフが送信できたらかっこいいと思って実装しました。
さっきまでグラフを画像にするところではまっていましたが、解決したので最後まで作りこみます。
function sendGraph() {
const folderId = '*****'; // Googleドライブの一時フォルダのID
const to = ''*****'; // グラフを投稿したいLINEのトークルームID
const sheet = getGraphSheet();
const chart = sheet.getCharts()[0];
const today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'YYYY-MM-dd');
const file_name = today + "_household_account.png"
const slides = SlidesApp.create("temp");
const imageBlob = slides
.getSlides()[0]
.insertSheetsChartAsImage(chart)
.getAs("image/png");
const folder = DriveApp.getFolderById(folderId);
DriveApp.getFileById(slides.getId()).setTrashed(true);
const file = folder.createFile(imageBlob.setName(file_name));
// 画像ファイルを公開設定にする
file.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
pushImage(to, file.getDownloadUrl(),file.getDownloadUrl());
DriveApp.getFolderById(folderId).removeFile(file);
return file_name;
}
function pushImage(to, src, srcPreview) {
const url = "https://api.line.me/v2/bot/message/push";
const headers = {
"Content-Type" : "application/json; charset=UTF-8",
'Authorization': 'Bearer ' + ACCESS_TOKEN,
};
const postData = {
"to" : to,
"messages" : [
{
'type':'image',
'originalContentUrl':src,
'previewImageUrl':srcPreview,
}
]
};
const options = {
"method" : "post",
"headers" : headers,
"payload" : JSON.stringify(postData)
};
return UrlFetchApp.fetch(url, options);
}
参考サイト:https://www.pnkts.net/2020/03/29/spreadsheet-graph-line-bot
で、トークルームで「グラフ」と投稿した時にsendGraph()が実行されるようにします。
グラフ送信に関係ある所だけ抜粋します。
function doPost(e) {
const event = JSON.parse(e.postData.contents).events[0];
const userMessage = event.message.text;
if (userMessage.math(/^グラフ$/)){
message = sendGraph();
}
}
ところで、自分のプロジェクトがデプロイ回200数回になったからか分かりませんが、新しいデプロイをしてもデプロイが反映されなくなりました。
時間が経つにつれ少しずつ実行されるバージョンが新しくなってきているようですが、これでは実装→検証ができません。
クラウドの開発環境って、こういうことがあると一気に手出しできなくなるので考え物ですね。
仕事では使いたくないかもです。
追記:上記問題への回避策を記事にしました。
[GAS]新しいデプロイをしてもコードが反映されないと思った時の対処法
コメント
[…] 前回の記事で、デプロイのバージョンが古いまま実行されてしまう現象を確認しました。動きを見る限り、こちらの想定のバージョンでは動いていませんでした。理屈としては動くはず […]