スプレッドシートに貼り付けてある画像を、水平もしくは垂直方向に整列するGoogle Apps Scriptです。
特にありません。今お使いのスプレッドシートに組み込めます。
サンプルとして4つの画像を用意しました。
サイズはバラバラで、ものによって縦横の比率も異なるものです。
まずは水平に整列させてみましょう。
上のメニューにある「スクリプト実行」から「シート上の画像を水平方向に並べる(上辺揃え)」を実行します。
プロンプトが表示されますので、整列させたい位置(行)を指定します。
5行目に整列させてみます。
少し待つと、このように整列されました。
次は垂直に整列させてみます。
上のメニューにある「スクリプト実行」から「シート上の画像を水平方向に並べる(上辺揃え)」を実行します。
プロンプトが表示されます。整列させたい位置(列)を指定します。
列はA、B、C・・となっていますが、ここで指定するときは数字で入力してください。
E列なら5、Z列なら26になります。
垂直に整列されました!
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00153/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('シート上の画像を水平方向に並べる(上辺揃え)', 'align_images_horizontally');
menu.addItem('シート上の画像を垂直方向に並べる(左辺揃え)', 'align_images_vertically');
// メニューを画面に追加する
menu.addToUi();
}
function align_images_horizontally() {
// menu.addItemでは引数を与えられないので、引数を入れるためだけの関数を作る
// 画像を並べる関数を呼び出す。水平方向。
align_images('horizontal');
}
function align_images_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);
// セル位置からのオフセットはY軸(行方向)のみ0にして縦位置を揃える
images[i].setAnchorCellYOffset(0);
} else if (direction == 'vertical') {
// 垂直に整列する場合
// 移動先の場所(range)を定義する。
// 移動先はプロンプトで入力された列になる。行は変わらない。
let range = sheet.getRange(images[i].getAnchorCell().getRow(), destination);
// 画像を指定セルに移動する
images[i].setAnchorCell(range);
// セル位置からのオフセットはX軸(列方向)のみ0にして、横位置を揃える
images[i].setAnchorCellXOffset(0);
}
}
}
スプレッドシートに貼り付けてある画像の高さ、幅を揃えてくれるGoogle Apps Scriptです。縦横比は維持します。拾ってきた素材のサイズがバラバラで揃えたいときに。
スプレッドシートに貼り付けてある画像を、指定したサイズで正方形にするGoogle Apps Scriptです。
スプレッドシートに貼り付けてある画像を、水平もしくは垂直方向に整列するGoogle Apps Scriptです。各画像の中心で揃えます。