GASでinsertImageした画像のサイズを変更すると画像が消える
スプレッドシートにGASで画像を追加したい
使っていた在庫管理システムが有料になったので、CSVデータを元にゆるゆるとスプレッドシートで在庫管理システムを作成している
商品数が多いので画像もあるといいよね、ということで画像データの入力機能をつけてみた
insertImage
insertImageはセル内に画像を挿入ではなく、セル上に画像を挿入になる
// 対象となるセルの行番号と列番号を指定 var rowNumber = 1; // 1行目
var columnNumber = 1; // A列
//アクティブなシートを取得
var mySheet = SpreadsheetApp.getActiveSheet();
//取得した画像をアクティブなシートに挿入
var image = mySheet.insertImage(URL, columnNumber, rowNumber);
ここまでは問題ない
setHeight, setWidth
セル内に収まるようにサイズをセルの幅に合わせてサイズ調整をしたい
//取得した画像をアクティブなシートに挿入し、
//サイズを調整する
var image = mySheet.insertImage(URL, columnNumber, rowNumber)
.setWidth(mySheet.getColumnWidth(columnNumber))
.setHeight(mySheet.getRowHeight(rowNumber));
ブラウザを再読み込みすると表示される
//スプレッドシートに対する保留中の変更をすべて適用する
SpreadsheetApp.flush();
まだ表示されない
//アクティブなスプレッドシートを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
//描画し直し
//シートを切り替えると表示されるので、シートを切り替え、flushし
//元のシートを再度表示させる
ss.getSheetByName("別のシート").activate();
SpreadsheetApp.flush();
mySheet.activate();
完成
// 対象となるセルの行番号と列番号を指定
var rowNumber = 1; // 1行目
var columnNumber = 1; // A列
//アクティブなシートを取得
var mySheet = SpreadsheetApp.getActiveSheet();
//取得した画像をアクティブなシートに挿入
var image = mySheet.insertImage(URL, columnNumber, rowNumber)
.setWidth(mySheet.getColumnWidth(columnNumber))
.setHeight(mySheet.getRowHeight(rowNumber));
//アクティブなスプレッドシートを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
//描画し直し
//シートを切り替えると表示されるので、シートを切り替え、flushし
//元のシートを再度表示させる
ss.getSheetByName("別のシート").activate();
SpreadsheetApp.flush();
mySheet.activate();