0.1.5 • Published 1 year ago

@fumigoro/gas-spreadsheet-object-mapper v0.1.5

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

gas-spreadsheet-object-mapper

English | 日本語

npm version

Google Apps Scriptにて、スプレッドシートに対する型付きのCRUDを実現するパッケージです。

型定義にはTypeScriptのtypeではなくclassを使用するため、JavaScriptでも恩恵を受けることができます。

Usage

前提

  • claspを導入済みでローカルでGoogleAppsScriptの開発を行う環境がある。
  • esbuild等のバンドラーを導入済みでnpmパッケージを使用したコードをビルドできる環境がある。

スプレッドシートにシートを追加

スプレッドシートに読み書き対象となる表を作成します。

  • 1行目に必ずカラム名を記入してください。
  • プライマリキーとなるカラム(ユニークなstringまたはnumber)を1つ用意する必要があります。

image

Install

npm install @fumigoro/gas-spreadsheet-object-mapper

データのclassを定義

@SpreadSheetColumnデコレーターを使用して、各メンバとスプレッドシート上のカラム名をマッピングします。

  • メンバー変数idは必ず定義し、プライマリキーとなるスプレッドシートのカラム名とマッピングしてください。idの型はstringまたはnumberのみ利用できます。
  • カラム名には日本語も使用できます。
  • スプレッドシート側のカラムの順序とメンバーの定義順序を一致させる必要はありません。
import { SpreadSheetColumn } from "@fumigoro/gas-spreadsheet-object-mapper";

class User {
  @SpreadSheetColumn('ID')
  id: number;

  @SpreadSheetColumn('Name')
  name: string;

  @SpreadSheetColumn('Age')
  age: number;

  // このようにして、スプレッドシートから値を読み込む際のパース関数や書き込む際のシリアライズ関数を追加することも可能です。
  @SpreadSheetColumn('CreatedAt', {
    parser: (value: any) => new Date(value),
    serializer: (value: any) => value.toISOString()
  })
  createdAt: Date;
}

SpreadSheetMapperインスタンスの作成

定義したデータクラスを用いてSpreadSheetMapperインスタンスを作成します。

SpreadSheetMapperはそのコンストラクタ内で全ての行のデータを読み出してメモリ上に持ちます。

import { SpreadSheetMapper } from "@fumigoro/gas-spreadsheet-object-mapper";

const spreadSheetId = 'YOUR_SPREADSHEET_ID';
const sheetName = 'Users';
const userSheetMapper = new SpreadSheetMapper(spreadSheetId, sheetName, User);

データのCRUD

list()

SpreadSheetMapperインスタンスがメモリ上に持つ全てのデータを返します。

const users = userSheetMapper.list();

get()

SpreadSheetMapperインスタンスがメモリ上に持つ全てのデータから、idが一致するデータを返します。

const user = userSheetMapper.get('target_user_id');

updateAndSave()

idが一致する行を更新し、スプレッドシートに書き込みます。 SpreadSheetMapperインスタンスがメモリ上にもつデータも更新されます。

userSheetMapper.updateAndSave({ id: 1, name: 'Jone', age: 36, createdAt: new Date() });

createAndSave()

新しいデータを挿入し、スプレッドシートに書き込みます。

userSheetMapper.createAndSave({ id: 4, name: 'Bob', age: 10, createdAt: new Date() });

deleteAndSave()

idが一致するデータを削除します。 SpreadSheetMapperインスタンスが持つデータとスプレッドシート両方から削除されます。 スプレッドシートにおいても行ごと削除され上に詰められます。

userSheetMapper.deleteAndSave(4);
0.1.5

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago