docs: Export/Get方式切替の設計書を追加
Pleasanter Export APIとGet API(api-record-get-multi)の処理時間比較機能の設計をまとめた。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
95f2acba85
commit
6f33339d43
@ -0,0 +1,84 @@
|
||||
# Export/Get方式切替 設計書
|
||||
|
||||
## 背景・目的
|
||||
|
||||
現状 `Module1.bas` はPleasanterの **Export API**(CSV全件取得)でデータを取得し、CSVパース後にテーブルへ書き込んでいる。これに加えて **Get API**(`api-record-get-multi`)でデータを取得する方式を追加し、基本情報シートのセルで方式を切り替えて実行できるようにする。両方式の処理時間を比較できるよう、開始・終了時刻と経過秒数をシートに記録する。
|
||||
|
||||
対象件数は200件以下を想定し、ページング処理は考慮しない。
|
||||
|
||||
## セル配置(基本情報シート)
|
||||
|
||||
| セル | 内容 |
|
||||
|---|---|
|
||||
| D3 | ステータスメッセージ(「取込処理中...」「取込処理完了」) |
|
||||
| D4 | 処理開始時刻(`Now`) |
|
||||
| D5 | 処理終了時刻(`Now`) |
|
||||
| D6 | 経過秒数(`(D5 - D4) * 86400` の数値) |
|
||||
| D7 | 取得方式(`"Export"` または `"Get"`。未入力・それ以外の値は `"Export"` 扱い) |
|
||||
|
||||
## 全体フロー(`Sub run()`)
|
||||
|
||||
```
|
||||
Sub run()
|
||||
Call init ' defaultSh, tableId, apiKey, baseURL, fetchMethod(D7の値) をセット
|
||||
|
||||
defaultSh.Range("D4").Value = Now
|
||||
defaultSh.Range("D3").Value = "取込処理中..."
|
||||
Application.ScreenUpdating = False
|
||||
Application.Calculation = xlManual
|
||||
|
||||
Select Case fetchMethod
|
||||
Case "Get"
|
||||
Call runGetFlow
|
||||
Case Else
|
||||
Call runExportFlow
|
||||
End Select
|
||||
|
||||
Application.Calculation = xlAutomatic
|
||||
Application.ScreenUpdating = True
|
||||
defaultSh.Range("D5").Value = Now
|
||||
defaultSh.Range("D6").Value = (defaultSh.Range("D5").Value - defaultSh.Range("D4").Value) * 86400
|
||||
defaultSh.Range("D3").Value = "取込処理完了"
|
||||
End Sub
|
||||
```
|
||||
|
||||
- `init()` に `fetchMethod = defaultSh.Range("D7").Value` の読み込みを追加する。
|
||||
- `runExportFlow` は既存の `exportCSVData` → `exportCSVDataToSheet` 呼び出しをそのまま移設したもの(ロジック無変更)。
|
||||
- `runGetFlow` は新規追加の `getRecordsData` → `getRecordsDataToSheet` を呼ぶ。
|
||||
|
||||
## Export方式(既存・無改造)
|
||||
|
||||
`exportCSVData` / `exportCSVDataToSheet` / `ParseCsv` / `CollectionToArray` は一切変更しない。
|
||||
|
||||
## Get方式(新規追加)
|
||||
|
||||
### `getRecordsData(tableId As String) As Collection`
|
||||
|
||||
Pleasanterの `api-record-get-multi` を呼び出し、レコード配列(Collection of Dictionary)を返す。
|
||||
|
||||
- エンドポイント: `POST {baseURL}/pleasanter/api/items/{tableId}/get`
|
||||
- リクエストボディ: `ApiVersion`, `ApiKey`, `View: { PageSize: 200 }`(200件以下想定のため1回のリクエストで取得しきる)
|
||||
- レスポンス: `res("Response")("Data")("Results")` を返す(各要素はレコードのDictionary)
|
||||
- 既存の `callRestApi` をそのまま利用する
|
||||
|
||||
### `getRecordsDataToSheet(records As Collection, targetSheet As String)`
|
||||
|
||||
`exportCSVDataToSheet` とは完全に独立した新規関数として実装する(既存ロジックへの影響を避けるため共通化しない)。
|
||||
|
||||
- `records.count = 0` の場合はメッセージ表示して終了
|
||||
- ヘッダは **1件目のレコードのキー一覧をそのまま使用**(`Title`, `Body`, `ClassA`, `DateA` などPleasanterの内部キー名。日本語ラベルへの変換は行わない)
|
||||
- 各レコードの値をヘッダ順に2次元配列へ格納
|
||||
- シート・テーブル(ListObject)の取得/新規作成、ヘッダ設定、`DataBodyRange` のクリアと書き込みは `exportCSVDataToSheet` と同様の手順を独自に実装する
|
||||
- テーブル名・出力先シートは `targetSheet`(=`tableId`)を共用し、Export方式実行時に作られた既存テーブルを上書きする(方式を切り替えるたびにヘッダ列構成が変わる点は許容する)
|
||||
|
||||
## 変更対象・追加対象まとめ
|
||||
|
||||
- 変更: `init()`(`fetchMethod` 読み込み追加), `Sub run()`(分岐フローに書き換え)
|
||||
- 追加: `runExportFlow`, `runGetFlow`, `getRecordsData`, `getRecordsDataToSheet`
|
||||
- 無改造: `exportCSVData`, `exportCSVDataToSheet`, `ParseCsv`, `CollectionToArray`, `callRestApi`
|
||||
|
||||
## 非対象・考慮しないこと
|
||||
|
||||
- 200件を超えるページング処理
|
||||
- Get方式でのヘッダの日本語ラベル化・Export方式との列対応付け
|
||||
- Get方式・Export方式のテーブルを別シートに分離すること(同一テーブルを共用する)
|
||||
Loading…
Reference in New Issue
Block a user