Google Apps Scriptでスプレッドシートのデータを自動で整形する方法

NO IMAGE

はじめに

Google スプレッドシートを使っていると、データの形式を統一したい場面がよくあります。たとえば、以下のようなケースです。

  • 名前の全角・半角を統一したい
  • 日付を YYYY/MM/DD 形式に統一したい
  • 空白の行を削除したい

こういった処理を手作業で行うのは面倒ですが、Google Apps Script(GAS)を使えば自動化できます。今回は、GASでスプレッドシートのデータを自動整形するスクリプトを紹介します。

スクリプトの概要

今回のスクリプトでは、以下の処理を実行します。

  1. 指定した範囲のデータを取得
  2. 名前の全角・半角を統一
  3. 日付を YYYY/MM/DD 形式に統一
  4. 空白の行を削除
  5. 整形したデータをスプレッドシートに書き戻す

スクリプトのコード

以下のコードを Google Apps Script のエディタに貼り付けて実行してください。

function formatSheetData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();

  var formattedData = data
    .map(row => row.map(cell => formatCell(cell))) // 各セルを整形
    .filter(row => row.some(cell => cell !== "")); // 空白行を削除

  sheet.getDataRange().clearContent(); // 既存のデータをクリア
  sheet.getRange(1, 1, formattedData.length, formattedData[0].length).setValues(formattedData);
}

function formatCell(value) {
  if (typeof value === "string") {
    return toFullWidth(value.trim()); // 全角に統一(必要に応じて変更)
  } else if (Object.prototype.toString.call(value) === "[object Date]") {
    return Utilities.formatDate(value, Session.getScriptTimeZone(), "yyyy/MM/dd");
  }
  return value;
}

function toFullWidth(str) {
  return str.replace(/[A-Za-z0-9]/g, s => String.fromCharCode(s.charCodeAt(0) + 0xFEE0));
}

スクリプトの説明

  1. formatSheetData()
    • スプレッドシートのデータを取得し、各セルを formatCell() で整形
    • 空白行を削除し、整形したデータをシートに書き戻す
  2. formatCell(value)
    • 文字列の場合は toFullWidth() を使って全角に統一
    • 日付の場合は yyyy/MM/dd の形式に変換
  3. toFullWidth(str)
    • 半角のアルファベットや数字を全角に変換

使い方

  1. Google スプレッドシートを開く
  2. 拡張機能 → Apps Script を開く
  3. 上記コードを貼り付けて保存
  4. formatSheetData() を実行

これで、スプレッドシートのデータが自動で整形されます。

おわりに

GASを使うことで、スプレッドシートのデータ整形を簡単に自動化できます。
ぜひ活用して、作業の効率化を図ってみてください!

GASカテゴリの最新記事