前提・実現したいこと
GASを利用して、スプレッドシートに用意したグラフを画像で取得し、
- GoogleDriveへ保存
- Slackへの投稿
を行おうとしているのですが、グラフのデザインを変更しても反映されず過去のデザインのグラフが取得されてしまいます。
該当のソースコード
下記参考にしています。
https://tonari-it.com/gas-save-graph-to-drive/
https://qiita.com/chidakiyo/items/fe55071203a370ef6e61
JavaScript
1function test(){ 2 3 var sheetName = 'hogehoge' // 送りたいグラフがあるシート名を入力する 4 var title = 'レポート' // Slackに通知する際の画像のタイトル 5 var index = 0 // グラフが1つだけの場合0 (複数のグラフがある場合には1などと指定する) 6 7 var chartImage = getChart(sheetName, index) 8 9 slack(chartImage, title); 10} 11 12// Slackに送る 13function slack(chart, title) { 14 var url = 'https://slack.com/api/files.upload'; // slackのAPIのURL 15 var token = 'xoxb-xxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxx'; // Slackのボットのトークン 16 var channel = '#test'; // チャンネルに送る時。(事前にbotのinviteが必要) 17 18 var payload = { 19 'token' : token, 20 'channels' : channel, 21 'file' : chart, 22 'filename' : title 23 }; 24 25 var params = { 26 'method' : 'post', 27 'payload' : payload 28 }; 29 30 var response = UrlFetchApp.fetch(url, params); 31} 32 33// シートからチャートを取得する 34function getChart(sheetName, index) { 35 var ss = SpreadsheetApp.getActiveSpreadsheet(); 36 var sheet = ss.getSheetByName(sheetName); // シート名を指定 37 var charts = sheet.getCharts(); 38 39 // グラフが複数ある場合は調整が必要です。 40 var chartImage = charts[index].getBlob().getAs('image/png').setName("graph.png"); 41 42 var folder = DriveApp.getFolderById('hogehoge'); 43 //フォルダにcreateFileメソッドを実行して、ファイルを作成 44 folder.createFile(chartImage); 45 46 47 return chartImage 48}
試したこと
- SlackへのポストもDriveへの保存も、過去のデザインが表示されます。
- 定期実行でも、主導によるスクリプト実行でも、どちらも同様の事象が起こります。
この情報だけだと何がおかしいのか難しいですね。getChartsの結果の長さとか見てみるのはいかがでしょうか。
あなたの回答
tips
プレビュー