画像が「セル内に」存在します。
セル内に埋め込んでいる画像は、.getImages()
では取得できないと思うのですが、本当にセル内の画像でしょうか?
それともセル上に配置されている(そして、特定のセルにアンカーされている)画像のことを指しているのでしょうか?
どちらか分かりかねますので、両方ご紹介します。
スプレッドシートの構成例
セルの名称「A1」などを指定して、セル上画像を操作する方法
セル上への画像の挿入方法
- スプレッドシートのメニューから、[挿入]→[画像]を選択
- [セル上に配置する]を選択
コード例
javascript
13
4function manipulateOverCellImage() {
5 const ss = SpreadsheetApp.getActiveSpreadsheet();
6 const sheet = ss.getActiveSheet();
7
8 // 全てのセル上画像を取得
9 const images = sheet.getImages();
10
11 // ↑の配列を、アンカーされているセルをキーにして、連想配列に変換
12 // 例:{'A1': imageObject, 'B1': imageObject}
13 const imageMap = {};
14 for (const image of images) {
15 const cell = image.getAnchorCell().getA1Notation();
16 imageMap[cell] = image;
17 }
18
19 // セル名を指定して、画像を操作
20 imageMap['A1'].setWidth(500);
21}
※画像の縦横比が崩れますのでご注意ください。
行・列番号を指定して、セルのサイズを操作する方法
セル内埋め込み画像は、セルのサイズを変更すれば、それにフィットするように自動で画像のサイズが調整されます。
その特性を利用して、セルのサイズを変更するだけのGASのコードを書きます。
セル内への画像の埋め込み方法
- スプレッドシートのメニューから、[挿入]→[画像]を選択
- [セル内に配置する]を選択
コード例
javascript
13
4function manipulateInCellImage() {
5 const ss = SpreadsheetApp.getActiveSpreadsheet();
6 const sheet = ss.getActiveSheet();
7
8 // 行高・列幅を変更 → 画像サイズはセルサイズに自動で調整される
9 sheet.setRowHeight(2, 500); // 2行目の高さ変更
10 sheet.setColumnWidth(2, 800); // 2列目(B)の幅変更
11}
※画像の縦横比は崩れず、縦横比を維持したままセルに合わてフィットされます。
※ただし、同じ行・同じ列の画像全てに影響がでてしまいますので、画像一枚だけを指定してサイズ変更はできません。
100枚も画像があるということは、画像の一覧表だと想像しているのですが、その場合は後者の「セル内埋め込み」の手法をお勧めいたします。