【GAS】Google Apps Script 活用事例 対象シートのセル内にDrive内の画像を挿入するスクリプト
セル内に画像を挿入
シートに画像を延々と挿入する退屈な作業を自動化したので、そのスクリプトを備忘録として残しておこうと思います。
画像は、I love PDFを使用して、PDFをJPGに変換したものを使用しています。
スクリプト全文
/**
* 対象シートのセル内に画像を挿入するスクリプト
*
*/
function setImageInnerCell() {
const folder = DriveApp.getFolderById('********************');
const files = folder.getFiles();
const values = [];
let count = 0;
let string = '';
//jpg、gif、pngを取得してシートの最終行に挿入する
while(files.hasNext()){
const file = files.next();
if(file.getMimeType().match(/^image\/(?:jpeg|gif|png)$/i)) {
values.push([file.getName(), file.getId()]);
count += 1;
}
}
//連番通りにファイルIDを格納した2次元配列を作成する。
values.sort(compareValues_);
console.log(values);
//['fileName', 'fileId'] 画像の名前、ファイルID
//row[1] fileIdのみを取り出す
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート名');
values.map(row => addImageSheet_(sheet, DriveApp.getFileById(row[1]).getBlob(), row[0]));
//挿入件数を表示させる
string += `<p>画像 ${count} 件を、挿入しました。</p>`;
console.log(string);
console.log(`${count} 件`);
const html = HtmlService.createHtmlOutput(string)
.setWidth(450)
.setHeight(300);
SpreadsheetApp.getUi().showModelessDialog(html, 'htmlを表示するよ');
}
/**
* 2次元配列をsortする
* 詳しくは、(三項) 演算子で検索
*
*/
function compareValues_(a, b) {
return a < b ? -1:1;
}
/**
* 最終行に1枚の画像を挿入する。
* @param {Object} presentation
* @param {Object} image
*
*/
function addImageSheet_(sheet, imageBlob, fileName) {
const contentType = imageBlob.getContentType();
const base64 = Utilities.base64Encode(imageBlob.getBytes());
const imageStr = "data:" + contentType + ";base64, " + base64;
const image = SpreadsheetApp.newCellImage()
.setSourceUrl(imageStr)
.setAltTextTitle(fileName)
.setAltTextDescription("-")
.build();
const lastRow = sheet.getLastRow() + 1;
console.log(`最終行:${lastRow}`);
//最終行かつ2列目に画像を挿入する
sheet.getRange(lastRow,2).setValue(image);
}
条件 (三項) 演算子
画像をGoogle Slidesに挿入する場合
今回、こちらの記事を参考にしました
この記事が気に入ったらサポートをしてみませんか?