GASでGoogleスプレッドシートのシートをソートする

2022-11-13
hero画像

💫 はじめに

この記事ではGAS(Google App Script)を使ってGoogleスプレッドシートのシートを並び替える方法を紹介します。

💫 ざっくり用語説明

⭐︎ GAS:
Google App Scriptの略。Googleが提供するプログラミング言語であり、Google関連のサービスとの連携が容易。ベースはJavaScript。

⭐︎ Googleスプレッドシート:
オンライン上の表計算ツール。Excelのような感じで使える。

💫 モチベーション

前回はSlackの履歴をスプレッドシートに保存する方法 を紹介しました。
しかし、これではシートの順番がごちゃごちゃになってしまい、見たいチャンネルの履歴を発見するのに時間がかかってしまいます。
このため、シートをソートしたいですね。

💫 公式ドキュメント

Google Sheets API Overview: https://developers.google.com/sheets/api/guides/concepts

💫 準備

  • Googleアカウントの作成
  • スプレッドシートの作成

💫 環境

  • Mac Book Pro (OS: Monterey)

💫 スプレッドシートのIDを取得

GASのスクリプトに「どのスプレッドシートをソートしたいのか」を教えてあげる必要があります。
まずは中身をソートしたいスプレッドシートを開いて、URLからスプレッドシートIDを取得します。
以下の画像のオレンジ色の部分にスプレッドシートIDが記載されるので、これをコピーしておきます。

GAS_URL

※ 注意
「シート」は各ワークシートのことを指します。タブやページとも言います。
「スプレッドシート」は「シート」の集合のことを指します。

💫 ソート用スクリプト作成

Googleドライブを開いて、画面左上の
新規ボタン → その他 → GoogleAppScript
から新しいスクリプトを作成します。 GAS_neew

ここに、以下のようなコードを書きます。

function Run() {
  sheetSort();
}

function sheetSort() {
  var spreadsheetId = "ここにスプレッドシートIDを入力";
  var getOptionalArgs = {
    "fields": "sheets.properties.sheetId,sheets.properties.title"
  }

  var data = Sheets.Spreadsheets.get(spreadsheetId, getOptionalArgs)
  var dataList = JSON.parse(data).sheets;
  console.log(dataList);

  // dataListをソートする
  dataList.sort(function(a, b) {
    if (a.properties.title > b.properties.title) return 1;
    if (a.properties.title < b.properties.title) return -1;
    return 0;
  });

  console.log(dataList);

  // ソートのためのクエリ作成
  var updateOptionalArgs = {
    "requests": [
    ]
  }

  for (var i in dataList) {
    var d = dataList[i];
    updateOptionalArgs.requests.push({
      "updateSheetProperties": {
        "properties": {
          "sheetId": d.properties.sheetId,
          "index": i
        },
        "fields": "sheetId,index"
      }
    });
  }

  // ソート実行
  res = Sheets.Spreadsheets.batchUpdate(updateOptionalArgs, spreadsheetId);
  console.log(res);
}

あとはこれを実行するだけです!

※ 注意
名前が日本語のシートは順番が少しおかしくなったりすることもあります。
どうしても順番が気に入らない場合は、手動で修正し直すか、シートの名前に記号や数字を付け加えてからソートしましょう。

それでは良きGASライフを!


©2022.うりゅAll Rights Reserved.