2026年2月4日

Google スプレッドシート

Google Spreadsheetにシート昇降順を追加!

Google Spreadsheetにシート昇降順を追加!

DXが進む中、「営業や作業者個々がExcelなどで月次管理していた情報をクラウド化したいね」という意見が当然あがりますよね。
Office365という選択しもあれば、Google スプレッドシートは?など様々な方法が検討されるかと思います。
私たちも同様の状況にあり、Google スプレッドシートであれば、Googleアカウントを有していれば誰でも無料で利用できるメリットもあり、テスト的にExcelのデータをインポートして運用テストを実施したりもしています。

今回は、そのような過程で起きた「困りごと」についての解決案を紹介します。

上の画像は、とあるExcelをGoogleスプレッドシートにインポートした結果。そろそろMISで管理されている企業様ばかりだと思いますが…(もち弊社もMISで管理されています)
毎月蓄積された数年分のシートが、1つの「Excelドキュメント」に集約されています。
見て分かるように…古いシート(左)から新しいシート(右)の順にインポートされています。

ここで課題になったのが、スプレッドシートにアクセスすると、毎回、最も左のシートが最初に表示てしまいます。デフォルト機能なの?
そこで、プルダウン機能で変更したいシートに移動して入力、という流れになるのですが、この場合、最も新しいシートを左になるよう一括でシートの並び順を替えられると便利。
しかし、そのような機能は用意されていません。

そこで、「そのような機能は自分で追加してしまえ!」となる訳です。
どうやって?…AIです。皆さんAIをただの検索君として使っていませんか?それでは少し勿体ない。
Googleスプレッドシートには、スクリプトを追加する機能がありますし、ExcelにもVisual Basic Editorが用意されている。コードが書ければ業務効率が図れる訳です。
そこで、コードはAIに書かせましょう。

並び替えのロジックはこんな感じ。

並び替えの共通ロジック(昇順 / 降順を引数で切替)

function sortSheetsByDateName(order = 'desc') {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheets = ss.getSheets();

  const parsed = sheets.map(sheet => {
    const name = sheet.getName();

    // 例: "2025年12月", "2023年03月 [正式]" もOK
    const match = name.match(/(\d{4})年(\d{1,2})月/);
    if (!match) return null;

    const year = Number(match[1]);
    const month = Number(match[2]) - 1; // JSは0始まり
    const date = new Date(year, month, 1);

    return { sheet, date };
  }).filter(Boolean);

  if (parsed.length === 0) {
    ss.toast('対象となる年月シートがありません', '📅 シート整理', 3);
    return;
  }

  // 並び順制御
  if (order === 'asc') {
    // 古い → 新しい
    parsed.sort((a, b) => a.date - b.date);
  } else {
    // 新しい → 古い
    parsed.sort((a, b) => b.date - a.date);
  }

  parsed.forEach((item, index) => {
    ss.setActiveSheet(item.sheet);
    ss.moveActiveSheet(index + 1);
  });

  ss.toast(
    order === 'asc'
      ? '古い順 → 新しい順に並び替えました'
      : '新しい順 → 古い順に並び替えました',
    '📅 シート整理',
    3
  );
}

メニューから呼ぶ専用関数(中身は1行)

function sortSheetsNewestFirst() {
  sortSheetsByDateName('desc'); // 新しい順
}

function sortSheetsOldestFirst() {
  sortSheetsByDateName('asc'); // 古い順
}

メニュー追加(onOpen)

 
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('📅 シート整理')
    .addItem('新しい月 → 古い月', 'sortSheetsNewestFirst')
    .addItem('古い月 → 新しい月', 'sortSheetsOldestFirst')
    .addSeparator()
    .addItem('(再読み込み)', 'onOpen')
    .addToUi();
}

このコード、どのように使う?

使い方は簡単。
スプレッドシートにも当然「Google Apps Script」が利用できます。
手順は以下の様に…

手順

  1. スプレッドシートを開く
  2. メニュー
    拡張機能 → Apps Script
  3. 下記コードを貼り付け
  4. 保存 → 実行

以上。
簡単ですよね。メニューにもシートの昇降順を変更する機能が追加されています。
AIコード生成、バイブコーディングが一般的になるとフロント、バックエンドの垣根が希薄になりますよね。
とっても便利。

あとは、コードを見ながら「どのコードが、どのような指示を出しているか」を学習し理解を深めれば完璧。
皆さんも、コード生成で業務改善を!

Categories: Tips, コラムPublished On: 2026年2月 4日By
DTP Tips
  • バラバラのテキストをつないで1つに!

    2026年2月4日

  • Adobe illustrator Beta版「ターンテーブル」を使ってみた!

    2025年11月6日

  • Illustratorでつくる文字の囲み枠

    2024年8月22日

  • ドキュメントプロファイルを使って
    新規作業のストレスを軽減しよう

    2024年8月19日

WEB Tips
  • モヤッとする、あれ。JS+CSSで「項目間だけ線」をスッキリ解決!

    2025年8月8日

  • WordPressサイトをGoogle検索から除外したい?
    「robots.txt」の正しい活用方法

    2025年7月3日

  • WordPressで記事を投稿してみよう!

    2025年6月26日

  • WordPressアップデートしてますか?

    2024年8月9日

取り組み
  • 小学校低学年向け夏休みカレンダー2025を配付します

    2025年6月20日