サマリ
このページについて
- スプレッドシートの画像保存はAPIが提供されていないようなので試行錯誤の結果を備忘録的に
結論
- GoogleスプレッドシートのデータをGoogleスライドにリンクさせて、画像で保存を行えば画像保存が可能!
- Slackで送信したり、その後の活用可能性は高まると思います!
準備するもの
- Googleスプレッドシート
- 保存したいデータなどがあるシート
- 以降、こちらがある前提で進めます
- Googleスライド
- 画像保存用のスライド
- 保存したいサイズに設定しておく必要あり
解説
1:画像保存したいデータのグラフ化
- スプレッドシートのデータのうち、画像保存していものをグラフにします
- 表や個別の数値などは「表グラフ」「スコアカードグラフ」などを使うとよいです
- ※GASでGoogleSlideに転記する方法もありますが、今回はこの手法で説明します
2:スライドへグラフのリンク作成
3.GAS記述
- 今回はスプレッドシート側にGASを記述していきます
- エラー処理などは割愛していますので、よしなに。
- 「保存先のフォルダID」は
- Googleドライブの「drive.google.com/drive/folders/★ここ★」←「ここ」に書いている文字列です
- 「保存するスライドのID」は
- Googleスライドの「docs.google.com/presentation/d/★ここ★/edit#slide=id.p」←「ここ」に書いている文字列です
gas
/***
* 対象スライドのリンクしているグラフを全部更新して、指定のGoogleドライブへ保存
*
* @param fileName 保存したいファイル名
*/
function exportSlideToPNG(fileName){
const folderId = '保存先のフォルダID';
const format = 'png';
const slideId = "保存するスライドのID";
const presentation = SlidesApp.openById(slideId);
const slides = presentation.getSlides();
const slide = slides[0];
const sheetCharts = slide.getSheetsCharts();
// update
for (var i = 0; i<sheetCharts.length; i++){
sheetCharts[i].refresh();
}
// flush
presentation.saveAndClose();
// output
const url = "https://docs.google.com/presentation/d/" + slideId + "/export/" + format;
const options = {
method: "get",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions: true
};
const res = UrlFetchApp.fetch(url, options);
if (res.getResponseCode() === 200) {
const folder = DriveApp.getFolderById(folderId);
folder.createFile(res.getBlob()).setName(fileName + "." + format);
}
}