当方GASを初めて1週間ほどの初心者です。
「Googleスプレッドシート内のグラフ挿入で作成したツリーマップをLINEBOTに送信する」の自動化をしました。
下記のGASスクリプトにてLINE送信まで大方うまくできていますが、2点どうしてもうまくいかないことがあります。
(1)グラフ画像が白黒化する
function graphLINE() {
// スプレッドシート取得
var ss = SpreadsheetApp.openById('10h_Zkz3cZpV6oonuf3fbe0J82mpLSVZh4pih9NkUnGk').getSheetByName('ツリー');
// シート内のグラフをすべて取得
var chart = ss.getCharts();
var folderId = '**'; // Googleドライブの一時フォルダのID
var to = '*'; // LINEの送る先
var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'YYYY-MM-dd');
// グラフを画像に変換
var graphImg = chart[0].getBlob();
var folder = DriveApp.getFolderById(folderId);
var file = folder.createFile(graphImg)
file.setName(today);
getchartsでチャート取得し、getBlobで変換準備、creatfileで画像変換で色落ちする理由がわかりません。
改善できるようなメソッドや、他のソースコードなどはあるのでしょうか。
(2)gooleDRIVEへの保存が思う通りにいかない
「一時保存用ファイルにcreatfileし、LINEBOTに送信後自動消去」を行いたいのですが、
なぜか指定フォルダに入らずgoogleDRIVE直下に保存してしまう、かつ自動削除も行われません。
// グラフを画像に変換
var graphImg = chart[0].getBlob();
var folder = DriveApp.getFolderById(folderId);
var file = folder.createFile(graphImg)
file.setName(today);
// 公開設定する
file.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT)
pushImage(to, file.getDownloadUrl(),file.getDownloadUrl())
DriveApp.getFolderById(folderId).removeFile(file)
createfileはフォルダクラスに対して処理を行えばいいと思っていたのですが、できませんでした。
上記2点について、もしご存知でしたら諸先輩方のお知恵をお借りしたく、何卒ご教示いただきますようお願い申しげます><
Google Apps Script(GAS)
function graphLINE() { // スプレッドシート取得 var ss = SpreadsheetApp.openById('10h_Zkz3cZpV6oonuf3fbe0J82mpLSVZh4pih9NkUnGk').getSheetByName('ツリー'); // シート内のグラフをすべて取得 var chart = ss.getCharts(); var folderId = '1m-HR_pA-zBJKx5C4uqJGkQ6wodoGUk5O'; // Googleドライブの一時フォルダのID var to = 'U7c9a3fc886ae93e8d72d3b5a2f902078'; // LINEの送る先 var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'YYYY-MM-dd'); // グラフを画像に変換 var graphImg = chart[0].getBlob(); var folder = DriveApp.getFolderById(folderId); var file = folder.createFile(graphImg) file.setName(today); // 公開設定する file.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT) pushImage(to, file.getDownloadUrl(),file.getDownloadUrl()) DriveApp.getFolderById(folderId).removeFile(file) } // line developersに書いてあるChannel Access Token var access_token = '04URrJdI62EeMhD7skG1MQBtS0NfMY88oGcduFRTp/WD7X88TZTq7MUbx81TEl4Ycwp+/7n52lwiRuB9H7KN0w1irTxUok/ijSby59rDMtAd3NtePLhJHJrOwfnngERiE9w0PoiBv/kegZGWBEXRgwdB04t89/1O/w1cDnyilFU='; /** * 指定のuser_idにpushをする */ function pushImage(to, src, srcPreview) { var url = "https://api.line.me/v2/bot/message/push"; var headers = { "Content-Type" : "application/json; charset=UTF-8", 'Authorization': 'Bearer ' + ac![イメージ説明](53b94b031c834eaf88cb421c5410e51f.png)cess_token, }; var postData = { "to" : to, "messages" : [ { 'type':'image', 'originalContentUrl':src, 'previewImageUrl':srcPreview, } ] }; var options = { "method" : "post", "headers" : headers, "payload" : JSON.stringify(postData) }; return UrlFetchApp.fetch(url, options); }
グラフと色落ち後の様子
補足情報(FW/ツールのバージョンなど)
あなたの回答
tips
プレビュー