ray88’s diary

お仕事で困ったとき用の自分用の覚書

GAS ライブラリ用スクリプトと呼び出しスクリプトの例

各種目次 - ray88’s diary
GAS 目次 - ray88’s diary
GAS ライブラリの作成方法 - ray88’s diary
ライブラリ用スクリプト(Utils.gs)

/** 
 * 指定シートの指定範囲から2次元配列でデータを取得する 
 * @param {string} sheetName - シート名
 * @param {string} rangeA1 - A1形式の範囲(例: "A1:C10")
 * @return {Array} データの2次元配列
 */
function getSheetData(sheetName, rangeA1) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  return sheet.getRange(rangeA1).getValues();
}

/**
 * 指定したログ内容をApps Scriptログとスプレッドシートに記録する
 * @param {string} logSheetName - 記録用シート名
 * @param {string} message - ログに記録するメッセージ
 */
function logMessage(logSheetName, message) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(logSheetName);
  sheet.appendRow([new Date(), message]);
  Logger.log(`[LOG] ${message}`);
}

/**
 * 日付を指定のフォーマットで文字列に変換する(例: YYYY/MM/DD HH:mm)
 * @param {Date} date - 日付オブジェクト
 * @param {string} format - 書式(例: "yyyy/MM/dd HH:mm")
 * @return {string} フォーマット済み文字列
 */
function formatDate(date, format) {
  return Utilities.formatDate(date, Session.getScriptTimeZone(), format);
}

/**
 * 配列の重複を除去して返す(例: ["A", "B", "A"] → ["A", "B"])
 * @param {Array} arr - 配列
 * @return {Array} 重複除去済みの配列
 */
function uniqueArray(arr) {
  return [...new Set(arr)];
}

呼び出し用スクリプト(TestLibrary.gs)

function testLibrary() {
  const data = Utils.getSheetData("データ", "A2:C10");
  Utils.logMessage("ログ", "データ取得成功!");
  const nowStr = Utils.formatDate(new Date(), "yyyy/MM/dd HH:mm");
  Logger.log(nowStr);

  const uniqueList = Utils.uniqueArray(["A", "B", "A", "C"]);
  Logger.log(uniqueList); // ["A", "B", "C"]
}