2022/09/30に更新

【GASで時短】すべてのシートで行、列を固定する

スプレッドシート小技

シートの行もしくは列を固定するGoogle Apps Scriptです。ブック内のすべてのシートに対して動作します。

こんな悩みを解決します


  • シートの行、列固定をしなくてはいけないがシートが大量にあって超めんどくさい

用意するもの


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

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


  • 開いているスプレッドシートのすべてのシートに対して、行もしくは列の固定ができます。
  • 何行、何列までの指定はプロンプトで入力できます。

使い方


1.スクリプトの実行

さっそくスクリプトを実行してみます。
まずは行を固定します。
上のメニューにある「スクリプト実行」から「全シートの行を固定する」を実行します。

プロンプトが表示されますので、何行目まで固定するかを指定します。
5行目までを指定してみます。

2.結果の確認

固定されました!

続いて列の固定も試してみましょう。
上のメニューにある「スクリプト実行」から「全シートの列を固定する」を実行します。

プロンプトに固定したい列数を入力します。

列も固定されました!
スクショではわかりませんが、他のシートも固定されています。

すべてのシートで固定を解除したい場合は、こちらのスクリプトをどうぞ。
【GASで時短】全シートの行・列固定を解除する

スクリプト


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

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

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

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

  // メニューに追加するボタン
  menu.addItem('全シートの行を固定する', 'frozen_sheet_row');
  menu.addItem('全シートの列を固定する', 'frozen_sheet_col');

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


function frozen_sheet_row() {
  // menu.addItemで呼び出す関数には引数が与えられないため、引数をつけるためだけの関数

  // 関数呼び出し(行の固定)
  frozen_sheet('row');
}


function frozen_sheet_col() {
  // menu.addItemで呼び出す関数には引数が与えられないため、引数をつけるためだけの関数

  // 関数呼び出し(列の固定)
  frozen_sheet('col');
}


function frozen_sheet(direction) {
  // 行・列どちらかを固定する関数

  // 開いているスプレッドシートオブジェクトを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // スプレッドシート内の全シートを取得
  const sheets = ss.getSheets();

  // 引数に応じてプロンプトに表示するメッセージを変えたいため、keyに引数を指定してテキストを格納
  const message = {};
  message['row'] = '何行目まで固定しますか?';
  message['col'] = '何列目まで固定しますか?';

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

  // プロンプトを表示し、何行目or何列目まで固定するか整数を入れてもらう
  const response = ui.prompt(message[direction], ui.ButtonSet.OK_CANCEL);

  // キャンセルボタンが押されたときは何もせず終了する
  if (response.getSelectedButton() == ui.Button.CANCEL) {
    return;
  }

  // シートの数だけループ
  for (let i = 0; i < sheets.length; i++) {

    if (direction == 'row') {
    // 引数がrowのときは行方向の固定を行う。
      sheets[i].setFrozenRows(response.getResponseText());

    } else if (direction == 'col') {
    // 引数がcolのときは列方向の固定を行う。
      sheets[i].setFrozenColumns(response.getResponseText());

    }
  }
}

関連するアプリ


【GASで時短】全シートに条件付き書式をセットする

すべてのシートに条件付き書式を適用してくれるGoogle Apps Scriptです。条件付き書式は便利ですが手動で設定するのは面倒なんですよね。

【GASで時短】全シートの条件付き書式を削除する

すべてのシートのすべての条件付き書式を削除するGoogle Apps Scriptです。条件付き書式はシート単位で操作する必要があり、面倒なので作成しました。

【GASで時短】アクティブシート以外の全シートを削除する

現在開いているシート以外の全てのシートを削除するGoogle Apps Scriptです。自動的にシートを大量生成したけどやり直したいときなどに。

【GASで時短】全てのシートのデータを1シートにまとめる

スプレッドシートの全てのシートのデータを、1つのシートに集約するGoogle Apps Scriptです。各シートで列が揃っていないと使いにくいですが、思いつきで作ってみました。

【GASで時短】すべてのシートを非表示にする

いま開いているシート以外のすべてのシートを非表示にするGoogle Apps Scriptです。あまり見られたくない作業用シートがたくさんあるときにどうぞ。

【GASで時短】全シートの行・列固定を解除する

全てのシートの行固定、列固定を解除するGoogle Apps Scriptです。ニーズはあんまりなさそうですが、思いつきで作ってみました。

タグ一覧

最新のアプリ

人気のアプリ

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