GASとLINEで家計簿-グラフの表示

GAS

この記事で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数回になったからか分かりませんが、新しいデプロイをしてもデプロイが反映されなくなりました。

209回もデプロイしてたのか・・・
バージョン209が実行されるはずのところなのに、なぜかバージョン192が実行されてしまう

時間が経つにつれ少しずつ実行されるバージョンが新しくなってきているようですが、これでは実装→検証ができません。
クラウドの開発環境って、こういうことがあると一気に手出しできなくなるので考え物ですね。
仕事では使いたくないかもです。

追記:上記問題への回避策を記事にしました。
[GAS]新しいデプロイをしてもコードが反映されないと思った時の対処法

スポンサーリンク

コメント

  1. […] 前回の記事で、デプロイのバージョンが古いまま実行されてしまう現象を確認しました。動きを見る限り、こちらの想定のバージョンでは動いていませんでした。理屈としては動くはず […]

タイトルとURLをコピーしました