2022/09/25に更新

【GASで整頓】シート上にある画像の幅、高さを揃える(縦横比固定)

スプレッドシート小技

スプレッドシートに貼り付けてある画像の高さ、幅を揃えてくれるGoogle Apps Scriptです。縦横比は維持します。拾ってきた素材のサイズがバラバラで揃えたいときに。

こんな悩みを解決します


  • シートにある画像の高さ・幅を一発で揃えたい
  • 縦横比は変えないでほしい

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


  • シートに貼り付けてある画像の「高さ」もしくは「幅」を揃えることができます。
  • サイズはプロンプトで入力できます。
  • 対象になる画像は、今開いているアクティブなシートに存在するものだけです。

使い方


1.スクリプトの実行

デモのために、4つの画像を用意しました。
サイズはバラバラで、ものによって縦横の比率も異なるものです。
まずは高さで揃えてみましょう。

上のメニューにある「スクリプト実行」から「シート上の画像をリサイズする(高さ指定、縦横比固定)」を実行します。

プロンプトが表示されますので、希望の高さを入力してください。
ここでは200としてみます。

2.結果の確認

ちょっと待つと、このように同じ高さで揃いましたね(揃ったことがわかりやすいように手で移動しています)。

同様に幅で揃えてみました。こちらもサイズは200を指定しています。
縦横比そのままで幅が揃っています。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00151/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('シート上の画像をリサイズする(高さ指定、縦横比固定)', 'resize_images_by_height');
  menu.addItem('シート上の画像をリサイズする(幅指定、縦横比固定)', 'resize_images_by_width');

  // メニューを画面に追加する
  menu.addToUi();
}

function resize_images_by_height() {
  // 引数を指定してリサイズ用関数を呼び出すためだけの関数

  // プロンプトを表示するためにUIオブジェクトを取得
  const ui = SpreadsheetApp.getUi();

  // プロンプトを表示し、高さを指定してもらう
  const response = ui.prompt('高さを入力してください', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたらスクリプトを終了する
  if (response.getSelectedButton() == ui.Button.CANCEL) {
    return;
  }

  // 引数に高さを入れて関数を呼び出す
  resize_images_on_sheet(null, response.getResponseText());

}

function resize_images_by_width() {
  // 引数を指定してリサイズ用関数を呼び出すためだけの関数

  // プロンプトを表示するためにUIオブジェクトを取得
  const ui = SpreadsheetApp.getUi();

  // プロンプトを表示し、幅を指定してもらう
  const response = ui.prompt('幅を入力してください', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたらスクリプトを終了する
  if (response.getSelectedButton() == ui.Button.CANCEL) {
    return;
  }

  // 引数に幅を入れて関数を呼び出す
  resize_images_on_sheet(response.getResponseText(), null);
}


function resize_images_on_sheet(input_width, input_height) {
  // アクティブシートに存在する画像をリサイズする関数

  // アクティブなスプレッドシートオブジェクトを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // アクティブなシートを取得
  const sheet = ss.getActiveSheet();

  // シート上の画像オブジェクトを取得する
  const images = sheet.getImages();

  // 画像の数だけループ
  for (let i = 0; i < images.length; i++) {

    // 画像の現在の高さと幅を取得する
    let current_height = images[i].getHeight();
    let current_width = images[i].getWidth();

    // 使用する変数を宣言。画像の比率、リサイズ後の高さ、リサイズ後の幅
    let ratio, resize_height, resize_width;

    if (input_width == null) {
      // 幅が未指定の場合は縦の長さで揃える

      // 入力された高さと現在の高さから、リサイズする比率を求める
      ratio = input_height / current_height;

      // 現在の幅と比率から、リサイズ後の幅を求める
      resize_width = current_width * ratio;

      // リサイズ後の高さは引数をそのまま使う
      resize_height = input_height;

    } else if (input_height == null) {
      // 高さが未指定の場合は幅の長さで揃える

      // 入力された幅と現在の幅から、リサイズする比率を求める
      ratio = input_width / current_width;

      // 現在の高さと比率から、リサイズ後の高さを求める
      resize_height = current_height * ratio;

      // リサイズ後の幅は引数をそのまま使う
      resize_width = input_width;

    }

    // 画像の高さと幅を指定する
    images[i].setHeight(resize_height);
    images[i].setWidth(resize_width);

  }
}

関連するアプリ


【GASで時短】同じ背景色のセルを選択状態にする

選択したセルと同じ背景色のセルを選択状態にするGoogle Apps Scriptです。細かく色分けされたセルの色を変えたくなったときにどうぞ。

【GASで時短】同じ文字色のセルを選択状態にする

文字色が同じセルを選択状態にしてくれるGoogle Apps Scriptです。特定の文字色をまとめて変えたくなったときにどうぞ。

【GASで時短】同じフォントサイズのセルを選択状態にする

同じフォントサイズのセルを選択状態にしてくれるGoogle Apps Scriptです。一部のフォントサイズをまとめて変えたくなったときなどにどうぞ。

【GASで時短】選択されているセルの数をカウントする

スプレッドシートで選択している範囲の「選択中のセルの数」「値が入っているセル」「数式が入っているセル」をカウントするGoogle Apps Scriptです。

【GASで時短】選択範囲で使われている文字色、背景色をカウントする

シートで選択したセル範囲に、文字色や背景色がいくつ使われているかを調べるGoogle Apps Scriptです。色の塗り分けで表現された資料に直面したときに使えるかも・・・?

【GASで整頓】シート上にある画像をすべて正方形にする

スプレッドシートに貼り付けてある画像を、指定したサイズで正方形にするGoogle Apps Scriptです。

【GASで整頓】シート上にある画像を水平・垂直方向に整列する(上辺、左辺揃え)

スプレッドシートに貼り付けてある画像を、水平もしくは垂直方向に整列するGoogle Apps Scriptです。

【GASで整頓】シート上にある画像を水平・垂直方向に整列する(中央揃え)

スプレッドシートに貼り付けてある画像を、水平もしくは垂直方向に整列するGoogle Apps Scriptです。各画像の中心で揃えます。

タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp