GASでシート上の画像を取得し、サイズ・位置変更や削除する方法(getImages)
スプレッドシートのシート上にある画像はGoogle Apps Script(GAS)で取得し、各種操作することができます。
今回、GASでシートに存在する画像を取得し、サイズ変更や位置変更、削除する方法を解説します。
スプレッドシートのシートに画像表示
スプレッドシートではシートのセルを使って、表計算を行う意外に画像を表示することができます。
スプレッドシートに画像挿入することで、表計算意外の利用方法が可能です。
GASでスプレッドシート上の画像を取得・操作
Google Apps Script(GAS)では、スプレッドシート上に表示されている画像を取得することができます。
取得した画像はシート上で色々な操作が可能で、位置を変更したり、高さ・幅などサイズ変更も可能です。
そのため、GASスクリプトでシート上の画像操作を行うことで、色々な自動化に応用できます。
シート上の画像取得はgetImagesメソッド
シート上に存在している画像を取得するGoogle Apps Script(GAS)のメソッドはgetImagesメソッドです。
sheet.getImages()
画像を取得したいsheetオブジェクトで、引数不要でgetImagesメソッドを実行します。
Imagesと複数系になっているようにシート上に存在している画像をすべて取得し、配列のように1つ1つの画像を参照できます。
なお、getImagesで取得できる画像は、overGridImageクラスのオブジェクトとして取得され、blob形式ではありません。
後述しますが、このblob形式ではない点が、GASのgetImagesメソッドの制約になることがあります。
getImagesで取得した画像の操作一覧
getImagesで取得した画像はoverGridImageオブジェクトとして取得され、主に以下の操作ができます。
- 位置変更
- サイズ(高さ・幅)変更
- 削除
シート内画像の位置変更
overGridImage.setAnchorCell(range)
シート上にある画像の表示位置を変更します。
引数にはrangeオブジェクトを指定し、例えばB2セルに位置を変更する場合、overGridImage.setAnchorCell(sheet.getRange(2,2))と記述します。
GASスクリプトでシート内画像の表示位置変更が可能です。
シート内画像のサイズ(高さ・幅)変更
overGridImage.setHeight(高さの数値)
overGridImage.setWidth(幅の数値)
それぞれ、画像の高さと幅を設定します。
設定する際にはsetHeight、setWidthともに引数に数値を指定します。
シート内画像の削除
overGridImage.remove()
シート内画像をGASで削除するには、removeメソッドを使用します。
removeメソッドを実行した画像が、シート上から削除され、表示されなくなります。
他にもgetImagesで取得した画像の操作はありますが、主に利用するのは上記の3種類のメソッドです。
GASでシート内画像を取得・操作するサンプルコード
実際にGoogle Apps Script(GAS)でスプレッドシートのシート内にある画像を取得し、位置変更やサイズ変更するサンプルコードを紹介します。
上記のスプレッドシートのアクティブなシートにある画像をgetImagesメソッドで取得し、操作します。
getImagesメソッドでシート内画像を取得し、位置・サイズ変更するGASサンプルコードは以下の通りです。
function getImageFromSheet() {
//スクリプトに紐づくスプレッドシートのアクティブなシートを取得
let mySheet = SpreadsheetApp.getActiveSheet();
//アクティブなシートに存在する画像を取得
let images = mySheet.getImages();
//スプレッドシートから取得した画像の位置を変更
images[0].setAnchorCell(mySheet.getRange(10,10));
//スプレッドシートの画像サイズ(高さ)を変更
images[0].setHeight(500);
//スプレッドシートの画像サイズ(幅)を変更
images[0].setWidth(700);
}
今回はシートが1つしかないので、アクティブなシートを取得した上で、getImagesで画像を取得します。
画像が1つしかないので、images[0]で指定した上で、位置変更とサイズ変更を実施します。
GASサンプルコードを実行すると、スプレッドシートが上記のように変化します。
画像の位置が変更され、画像サイズも指定したサイズに変更されています。
GASでシートへの画像挿入も可能
なお、Google Apps Script(GAS)では、シート上にある画像を取得するのと逆に、画像を挿入することもできます。
GASスクリプトで画像を挿入する場合、insertImageメソッドを使用します。
以下の記事でinsertImageメソッドを使ったシートへの画像挿入方法を解説しています。
シートから取得した画像はblob形式に変換不可
なお、Google Apps Script(GAS)のgetImagesメソッドでシートから取得した画像は、OverGridImageという型のオブジェクトです。
これは、通常GASで画像を扱う際のblob形式とは異なります。
スプレッドシートのシートから取得した画像を、GoogleドライブやGoogleドキュメントと連携するには、blob形式でなければなりません。
OverGridImage型の画像をblob形式に変換したいのですが、残念ながらOverGridImageにはblobに変換するメソッドは用意されていません。
そのため、シートからgetImagesメソッドで取得した画像は、シート上では画像操作ができるものの、他のサービスと連携ができない状態です。
同じ要望はGASのQ&Aサイト「Stack Overflow」でもありましたが、「不可能」とあり、Google側が改修するのを待つしかありません。
まとめ・終わりに
今回、Google Apps Script(GAS)でスプレッドシートのシート上にある画像を取得し、各種操作する方法を紹介しました。
GASのgetImagesメソッドを実行することで、シートに存在する画像を取得することができます。
overGridImageオブジェクトとして取得した画像は位置やサイズを変更したり、削除するといった操作が可能です。
ただ、blob形式では取得できず、overGridImage→blobに変換ができないため、シート上での操作にとどまります。
シートへの画像挿入と組み合わせることで、色々な利用方法ができるようになります。
シートで画像操作したい場合には、GASのgetImagesメソッドを活用しましょう。
ディスカッション
コメント一覧
まだ、コメントがありません