【GAS】外部URLを使ってセル内画像挿入

  • 2022.02.28
  • GAS
【GAS】外部URLを使ってセル内画像挿入

画像の外部URLを使ってセル内に画像をGoogle Apps Scriptを使って貼り付ける方法を記載します。

方法

画像が外部サーバにある場合

下記のようなコードで実現できます。

var image = SpreadsheetApp.newCellImage()
                            .setSourceUrl("画像のURL")
                            .setAltTextTitle("テスト")
                            .setAltTextDescription("テスト2")
                            .build();

sheet.getRange(1,1).setValue(image);

また、以下の方法で関数で読み込む方法もあります。

sheet.getRange(1,1).setFormula('=image("画像のURL")');

ただし、貼り付けた後対象のシートをすぐにpdfにするなどを行う場合、二つ目の方法だと画像をロードする前にpdf化されてしまい、タイミングによっては画像が表示されないという問題が発生しました。
(二つ目の方法の後に、SpreadsheetApp.flush();を3回ほど実行すれば、画像が表示されるという記事も見ましたが、何回に一回か失敗しました。)

なので、私は一つ目の方法を使うようにしています。

画像がgoogleドライブのフォルダにある場合

google Driveのフォルダにある場合は、base64形式に変換して使用します。

サンプルコードとしては以下になります。

var fileId = "画像のファイルID"
var blob = DriveApp.getFileById(fileId).getBlob();
 
var contentType = blob.getContentType();
var base64 = Utilities.base64Encode(blob.getBytes());
var imageStr = "data:" + contentType + ";base64, " + base64;
 
var image = SpreadsheetApp.newCellImage()
                            .setSourceUrl(imageStr)
                            .setAltTextTitle("テスト")
                            .setAltTextDescription("テスト2")
                            .build();
 
  sheet.getRange(1,1).setValue(image);

以上になります。試してみてください。

GASカテゴリの最新記事