質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

1回答

2480閲覧

GASでシート上の任意の画像を選択したい

kihokutarou

総合スコア59

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2022/12/06 02:59

前提

スプレッドシート上に複数(100以上)の画像が「セル内に」存在します。

実現したいこと

任意の画像を選択しサイズ変更を行いたい。
できればrange(,)の画像を、という選択をしたい。
その場合、どのような記述をすればよいか。
可能か不可能化を含めて教えていただくと助かります。

発生している問題・エラーメッセージ

getimageだと配列に一気に入るために扱いが難しい。

該当のソースコード

function getImageFromSheet() { let mySheet = SpreadsheetApp.getActiveSheet(); let images = mySheet.getImages(); Logger.log(images) }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Cocode

2022/12/06 10:16

.getImages()ではセル内に埋め込んでいる画像は取得できないのですが、本当にセル内に存在している画像ですか?
guest

回答1

0

画像が「セル内に」存在します。

セル内に埋め込んでいる画像は、.getImages()では取得できないと思うのですが、本当にセル内の画像でしょうか?
それともセル上に配置されている(そして、特定のセルにアンカーされている)画像のことを指しているのでしょうか?
どちらか分かりかねますので、両方ご紹介します。

スプレッドシートの構成例

AB
1セル上画像セル上画像
2セル内埋め込み画像

セルの名称「A1」などを指定して、セル上画像を操作する方法

セル上への画像の挿入方法
  • スプレッドシートのメニューから、[挿入]→[画像]を選択
  • [セル上に配置する]を選択
コード例

javascript

1/** 2 * セル上に配置されている画像の場合、セルを指定して画像を操作する関数 3 */ 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

1/** 2 * セル内に埋め込まれている画像の場合、セルを指定してセルを操作する関数 3 */ 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枚も画像があるということは、画像の一覧表だと想像しているのですが、その場合は後者の「セル内埋め込み」の手法をお勧めいたします。

投稿2022/12/06 20:10

編集2022/12/06 21:36
Cocode

総合スコア2314

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問