スプレッドシートに貼り付けてある画像を、水平もしくは垂直方向に整列するGoogle Apps Scriptです。各画像の中心で揃えます。
特にありません。今お使いのスプレッドシートに組み込めます。
サンプルとして4つの画像を用意しました。
サイズはバラバラで、縦横の比率も異なるものです。
まずは水平に整列させてみましょう。
上のメニューにある「スクリプト実行」から「シート上の画像を水平方向に並べる(中央揃え)」を実行します。
プロンプトが表示されますので、整列させたい位置(行)を指定します。
10行目に整列させてみます。
各オブジェクトの中心で整列されました!
動きとしては、指定した行にオブジェクトを移動してからオブジェクトの半分の高さをマイナスしてずらしています。
今回のサンプル画像で行指定を5以下にすると画面外にはみ出てしまいそうですね。
次は垂直に整列させてみます。
上のメニューにある「スクリプト実行」から「シート上の画像を垂直方向に並べる(中央揃え)」を実行します。
プロンプトが表示されます。整列させたい位置(列)を指定します。
列はA、B、C・・となっていますが、ここで指定するときは数字で入力してください。
E列なら5、Z列なら26になります。E列を基準にして整列させてみましょう。
垂直に整列されました!
垂直の場合も指定した列より左にはみ出てしまいますので、シートの描画範囲から画像がはみ出さないようにご注意ください。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00154/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('シート上の画像を水平方向に並べる(中央揃え)', 'align_images_center_horizontally');
menu.addItem('シート上の画像を垂直方向に並べる(中央揃え)', 'align_images_center_vertically');
// メニューを画面に追加する
menu.addToUi();
}
function align_images_center_horizontally() {
// menu.addItemでは引数を与えられないので、引数を入れるためだけの関数を作る
// 画像を並べる関数を呼び出す。水平方向。
align_images('horizontal');
}
function align_images_center_vertically() {
// menu.addItemでは引数を与えられないので、引数を入れるためだけの関数を作る
// 画像を並べる関数を呼び出す。垂直方向。
align_images('vertical');
}
function align_images(direction) {
// 引数に応じて水平 or 垂直に画像を並べる関数
// アクティブなスプレッドシートオブジェクトを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// アクティブなシートを取得
const sheet = ss.getActiveSheet();
// シート上の画像オブジェクトを取得する
const images = sheet.getImages();
// プロンプトを表示するためにUIオブジェクトを取得
const ui = SpreadsheetApp.getUi();
// プロンプトで表示するメッセージを定義する。引数によって変えたいのでkeyに引数を使う。
const message = {};
message['horizontal'] = ['画像を水平に並べます。並べたい位置(行番号)を入力してください','例:5'];
message['vertical'] = ['画像を垂直に並べます。並べたい位置(列番号)を入力してください','例:E列に並べたい場合は5と入力してください'];
// プロンプトを表示し、整列する位置(行 or 列)を入力してもらう
const response = ui.prompt(message[direction][0], message[direction][1], ui.ButtonSet.OK_CANCEL);
// キャンセルが押されたら何もせずに終了する
if (response.getSelectedButton() == ui.Button.CANCEL) {
return;
}
// プロンプトで入力された数字を取り出す
const destination = Number(response.getResponseText());
// 画像の数だけループ
for (let i = 0; i < images.length; i++) {
if (direction == 'horizontal') {
// 水平方向に揃える場合
// 移動先の場所(range)を定義する。
// 移動先はプロンプトで入力された行になる。列は変わらない。
let range = sheet.getRange(destination, images[i].getAnchorCell().getColumn());
// 画像を指定セルに移動する
images[i].setAnchorCell(range);
// 各画像の中心で揃えるため、オブジェクトの高さの半分をずらす。
let half_of_height = (images[i].getHeight() / 2) * -1;
images[i].setAnchorCellYOffset(half_of_height);
} else if (direction == 'vertical') {
// 垂直方向に揃える場合
// 移動先はプロンプトで入力された列になる。行は変わらない。
let range = sheet.getRange(images[i].getAnchorCell().getRow(), destination);
// 画像を指定セルに移動する
images[i].setAnchorCell(range);
// 各画像の中心で揃えるため、オブジェクトの幅の半分をずらす。
let half_of_width = (images[i].getWidth() / 2) * -1;
images[i].setAnchorCellXOffset(half_of_width);
}
}
}
スプレッドシートに貼り付けてある画像の高さ、幅を揃えてくれるGoogle Apps Scriptです。縦横比は維持します。拾ってきた素材のサイズがバラバラで揃えたいときに。
スプレッドシートに貼り付けてある画像を、指定したサイズで正方形にするGoogle Apps Scriptです。
スプレッドシートに貼り付けてある画像を、水平もしくは垂直方向に整列するGoogle Apps Scriptです。