Smartsheet MCP サーバー
Smartsheetとのシームレスな統合を実現するモデルコンテキストプロトコル(MCP)サーバー。標準化されたインターフェースを通じてSmartsheetドキュメントの自動操作を可能にします。このサーバーは、AIを活用した自動化ツールとSmartsheetの強力なコラボレーションプラットフォーム間のギャップを埋めます。
概要
Smartsheet MCP Serverは、Smartsheetとのインテリジェントな連携を促進するように設計されており、ドキュメント管理、データ操作、列のカスタマイズのための堅牢なツールセットを提供します。自動化されたワークフローの重要なコンポーネントとして機能し、AIシステムがSmartsheetデータをプログラム的に操作しながら、データの整合性を維持し、ビジネスルールを適用できるようにします。
主なメリット
インテリジェントな統合: AIシステムをSmartsheetのコラボレーションプラットフォームにシームレスに接続します
データ整合性: 検証ルールを適用し、操作全体で参照整合性を維持します。
数式管理: 数式参照を自動的に保存および更新します
柔軟な構成: さまざまな列タイプと複雑なデータ構造をサポート
エラー耐性: 複数のレイヤーで包括的なエラー処理と検証を実装します
ヘルスケア分析:臨床および研究データに特化した分析機能
バッチ処理:大規模な医療データセットの効率的な処理
カスタムスコアリング:ヘルスケアの取り組みと研究のための柔軟なスコアリングシステム
ユースケース
臨床研究分析
プロトコルコンプライアンススコアリング
患者データ分析
研究影響評価
臨床試験データ処理
自動研究ノート要約
病院運営
リソース利用分析
患者満足度スコア
部門効率指標
スタッフのパフォーマンス分析
品質指標の追跡
ヘルスケアイノベーション
小児アライメントスコアリング
イノベーションの影響評価
研究の優先順位付け
実装実現可能性分析
臨床的価値評価
自動ドキュメント管理
プログラムによるシート構造の変更
動的な列の作成と管理
自動データ検証とフォーマット
データ操作
整合性チェックを伴う一括データ更新
インテリジェントな重複検出
数式を考慮した変更
システム統合
AIによるシートのカスタマイズ
自動レポートワークフロー
システム間のデータ同期
統合ポイント
サーバーは以下と統合されます:
データ操作用の Smartsheet API
標準化された通信のためのMCPプロトコル
stdioインターフェース経由のローカル開発ツール
構造化ログによるシステムの監視
Related MCP server: Google Drive MCP Server
建築
サーバーは、MCP と Smartsheet 間のブリッジ アーキテクチャを実装します。
graph LR
subgraph MCP[MCP Layer]
direction TB
A[Client Request] --> B[TypeScript MCP Server]
B --> C[Tool Registry]
B --> D[Config Management]
end
subgraph CLI[CLI Layer]
direction TB
E[Python CLI] --> F[Argument Parser]
F --> G[Command Router]
G --> H[JSON Formatter]
end
subgraph Core[Core Operations]
direction TB
I[Smartsheet API Client] --> J[Column Manager]
J --> K[Data Validator]
J --> L[Formula Parser]
end
MCP --> CLI --> Core
style A fill:#f9f,stroke:#333
style I fill:#bbf,stroke:#333TypeScript MCP レイヤー(
src/index.ts)MCPプロトコル通信を処理する
利用可能なツールを登録および管理します
リクエストをPython実装にルーティングする
構成とエラー処理を管理します
Python CLI レイヤー(
smartsheet_ops/cli.py)操作用のコマンドラインインターフェースを提供する
引数の解析と検証を処理する
重複検出を実装
JSONデータのフォーマットを管理する
コア操作レイヤー(
smartsheet_ops/__init__.py)Smartsheet APIインタラクションを実装
複雑な列タイプの管理を処理
データの正規化と検証を提供します
システム列と数式解析を管理します
列管理フロー
sequenceDiagram
participant C as Client
participant M as MCP Server
participant P as Python CLI
participant S as Smartsheet API
C->>M: Column Operation Request
M->>P: Parse & Validate Request
alt Add Column
P->>S: Validate Column Limit
S-->>P: Sheet Info
P->>S: Create Column
S-->>P: Column Created
P->>S: Get Column Details
S-->>P: Column Info
else Delete Column
P->>S: Check Dependencies
S-->>P: Formula References
alt Has Dependencies
P-->>M: Dependency Error
M-->>C: Cannot Delete
else No Dependencies
P->>S: Delete Column
S-->>P: Success
end
else Rename Column
P->>S: Check Name Uniqueness
S-->>P: Validation Result
P->>S: Update Column Name
S-->>P: Name Updated
P->>S: Update Formula References
S-->>P: References Updated
end
P-->>M: Operation Result
M-->>C: Formatted Responseエラー処理フロー
flowchart TD
A[Client Request] --> B{MCP Layer}
B -->|Validation Error| C[Return Error Response]
B -->|Valid Request| D{CLI Layer}
D -->|Parse Error| E[Format JSON Error]
D -->|Valid Command| F{Core Operations}
F -->|API Error| G[Handle API Exception]
F -->|Validation Error| H[Check Error Type]
F -->|Success| I[Format Success Response]
H -->|Dependencies| J[Return Dependency Info]
H -->|Limits| K[Return Limit Error]
H -->|Data| L[Return Validation Details]
G --> M[Format Error Response]
J --> N[Send to Client]
K --> N
L --> N
I --> N
style A fill:#f9f,stroke:#333
style N fill:#bbf,stroke:#333特徴
ツール
get_column_map(読み取り)Smartsheet から列マッピングとサンプルデータを取得します
以下を含む詳細な列メタデータを提供します:
列の種類(システム列、数式、選択リスト)
検証ルール
フォーマット仕様
自動番号設定
コンテキストのサンプルデータを返します
データの書き込みに関する使用例が含まれています
smartsheet_write(作成)次の処理をインテリジェントに実行して、新しい行を Smartsheet に書き込みます。
システム管理の列
複数選択リストの値
数式ベースの列
自動重複検出を実装
行IDを含む詳細な操作結果を返します
smartsheet_update(更新)Smartsheet の既存の行を更新します
部分的な更新をサポート(特定のフィールドの変更)
検証によりデータの整合性を維持
複数選択フィールドを一貫して処理します
行ごとに成功/失敗の詳細を返します
smartsheet_delete(削除)Smartsheet から行を削除します
複数行の一括削除をサポート
行の存在と権限を検証します
詳細な操作結果を返します
smartsheet_add_column(列管理)Smartsheet に新しい列を追加します
すべての列タイプをサポートします:
テキスト番号
日付
チェックボックス
ピックリスト
連絡先リスト
設定可能なオプション:
位置インデックス
検証ルール
数式の定義
ピックリストオプション
検証により列制限(400)を強制する
詳細な列情報を返します
smartsheet_delete_column(列管理)依存関係をチェックしながら安全に列を削除します
削除前に数式参照を検証します
数式で使用されている列の削除を防止します
詳細な依存関係情報を返します
強制削除オプションをサポート
smartsheet_rename_column(列管理)関係性を維持しながら列の名前を変更します
数式参照を自動的に更新します
データの整合性を維持
名前の一意性を検証する
詳細な更新情報を返します
smartsheet_bulk_update(条件付き更新)ルールに基づいて条件付き一括更新を実行します
複雑な条件評価をサポートします:
複数の演算子 (equals、contains、greaterThan など)
型別の比較(テキスト、日付、数値)
空/空でない小切手
設定可能なサイズでのバッチ処理
包括的なエラー処理とロールバック
詳細な操作結果の追跡
start_batch_analysis(ヘルスケア分析)AI分析でシート全体または選択した行を処理します
複数の分析タイプをサポートします:
臨床記録の要約
患者のフィードバックの感情分析
ヘルスケアイニシアチブのカスタムスコアリング
研究影響評価
特徴:
自動バッチ処理(バッチあたり50行)
進捗状況の追跡とステータスの監視
詳細なレポートによるエラー処理
カスタマイズ可能な分析目標
複数のソース列のサポート
get_job_status(分析監視)
バッチ分析の進行状況を追跡します
詳細なジョブ統計を提供します:
処理する行の合計
処理された行数
失敗した行数
処理タイムスタンプ
リアルタイムのステータス更新
包括的なエラー報告
cancel_batch_analysis(ジョブ制御)
実行中のバッチ分析ジョブをキャンセルします
正常なプロセス終了
データの一貫性を維持する
最終的なジョブステータスを返します
主な機能
列タイプの管理
システム列タイプ (AUTO_NUMBER、CREATED_DATE など) を処理します
数式解析と依存関係の追跡をサポート
ピックリストオプションと複数選択値を管理します
包括的な列操作(追加、削除、名前変更)
数式参照の保存と更新
データ検証
自動重複検出
列の種類の検証
データ形式の検証
列依存性分析
名前の一意性の検証
メタデータ処理
列のメタデータを抽出して処理する
検証ルールを処理する
フォーマット仕様を管理する
数式の依存関係を追跡する
列の関係を維持する
ヘルスケア分析
臨床ノートの要約
患者のフィードバック感情分析
プロトコルコンプライアンススコアリング
研究影響評価
リソース利用分析
バッチ処理
自動行バッチ処理(バッチあたり 50 行)
進捗状況の追跡と監視
エラー処理と回復
カスタマイズ可能な処理目標
複数列分析のサポート
ジョブ管理
リアルタイムステータス監視
詳細な進捗状況の追跡
エラー報告とログ記録
求人キャンセルサポート
バッチ操作制御
設定
前提条件
Node.jsとnpm
Conda(環境管理用)
Smartsheet API アクセス トークン
環境設定
専用の conda 環境を作成します。
conda create -n cline_mcp_env python=3.12 nodejs -y
conda activate cline_mcp_envNode.js の依存関係をインストールします。
npm installPython パッケージをインストールします。
cd smartsheet_ops
pip install -e .
cd ..TypeScript サーバーを構築します。
npm run build構成
サーバーはMCP設定で適切に設定する必要があります。Claude DesktopとClineの両方で使用できます。
1. Smartsheet APIキーを取得する
Smartsheetにログイン
アカウント→個人設定→APIアクセスへ移動
新しいアクセストークンを生成する
2. Cline 用の設定
構成パスはオペレーティング システムによって異なります。
macOS :
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonウィンドウズ:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.jsonリナックス:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json{
"mcpServers": {
"smartsheet": {
"command": "/Users/[username]/anaconda3/envs/cline_mcp_env/bin/node",
"args": ["/path/to/smartsheet-server/build/index.js"],
"env": {
"PYTHON_PATH": "/Users/[username]/anaconda3/envs/cline_mcp_env/bin/python3",
"SMARTSHEET_API_KEY": "your-api-key",
"AZURE_OPENAI_API_KEY": "your-azure-openai-key",
"AZURE_OPENAI_API_BASE": "your-azure-openai-endpoint",
"AZURE_OPENAI_API_VERSION": "your-api-version",
"AZURE_OPENAI_DEPLOYMENT": "your-deployment-name"
},
"disabled": false,
"autoApprove": [
"get_column_map",
"smartsheet_write",
"smartsheet_update",
"smartsheet_delete",
"smartsheet_search",
"smartsheet_add_column",
"smartsheet_delete_column",
"smartsheet_rename_column",
"smartsheet_bulk_update",
"start_batch_analysis",
"get_job_status",
"cancel_batch_analysis"
]
}
}
}3. Claude Desktop 用の設定(オプション)
構成パスはオペレーティング システムによって異なります。
macOS :
~/Library/Application Support/Claude/claude_desktop_config.jsonウィンドウズ:
%APPDATA%\Claude\claude_desktop_config.jsonリナックス:
~/.config/Claude/claude_desktop_config.json{
"mcpServers": {
"smartsheet": {
"command": "/Users/[username]/anaconda3/envs/cline_mcp_env/bin/node",
"args": ["/path/to/smartsheet-server/build/index.js"],
"env": {
"PYTHON_PATH": "/Users/[username]/anaconda3/envs/cline_mcp_env/bin/python3",
"SMARTSHEET_API_KEY": "your-api-key",
"AZURE_OPENAI_API_KEY": "your-azure-openai-key",
"AZURE_OPENAI_API_BASE": "your-azure-openai-endpoint",
"AZURE_OPENAI_API_VERSION": "your-api-version",
"AZURE_OPENAI_DEPLOYMENT": "your-deployment-name"
},
"disabled": false,
"autoApprove": [
"get_column_map",
"smartsheet_write",
"smartsheet_update",
"smartsheet_delete",
"smartsheet_search",
"smartsheet_add_column",
"smartsheet_delete_column",
"smartsheet_rename_column",
"smartsheet_bulk_update",
"start_batch_analysis",
"get_job_status",
"cancel_batch_analysis"
]
}
}
}サーバーの起動
ClineまたはClaude Desktopで必要なときにサーバーが自動的に起動します。ただし、テストのために手動で起動することもできます。
macOS/Linux :
# Activate the environment
conda activate cline_mcp_env
# Start the server
PYTHON_PATH=/Users/[username]/anaconda3/envs/cline_mcp_env/bin/python3 SMARTSHEET_API_KEY=your-api-key node build/index.jsウィンドウズ:
:: Activate the environment
conda activate cline_mcp_env
:: Start the server
set PYTHON_PATH=C:\Users\[username]\anaconda3\envs\cline_mcp_env\python.exe
set SMARTSHEET_API_KEY=your-api-key
node build\index.jsインストールの確認
サーバーは起動時に「Smartsheet MCP server running on stdio」を出力する必要があります。
任意の MCP ツール(例:get_column_map)を使用して接続をテストします。
Python 環境に smartsheet パッケージがインストールされていることを確認します。
conda activate cline_mcp_env pip show smartsheet-python-sdk
使用例
列情報の取得(読み取り)
// Get column mapping and sample data
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "get_column_map",
arguments: {
sheet_id: "your-sheet-id",
},
});データの書き込み(作成)
// Write new rows to Smartsheet
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_write",
arguments: {
sheet_id: "your-sheet-id",
column_map: {
"Column 1": "1234567890",
"Column 2": "0987654321",
},
row_data: [
{
"Column 1": "Value 1",
"Column 2": "Value 2",
},
],
},
});データの更新(更新)
// Update existing rows
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_update",
arguments: {
sheet_id: "your-sheet-id",
column_map: {
Status: "850892021780356",
Notes: "6861293012340612",
},
updates: [
{
row_id: "7670198317295492",
data: {
Status: "In Progress",
Notes: "Updated via MCP server",
},
},
],
},
});データの削除(削除)
// Delete rows from Smartsheet
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_delete",
arguments: {
sheet_id: "your-sheet-id",
row_ids: ["7670198317295492", "7670198317295493"],
},
});ヘルスケア分析の例
// Example 1: Pediatric Innovation Scoring
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "start_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
type: "custom",
sourceColumns: ["Ideas", "Implementation_Details"],
targetColumn: "Pediatric_Score",
customGoal:
"Score each innovation 1-100 based on pediatric healthcare impact. Consider: 1) Direct benefit to child patients, 2) Integration with pediatric workflows, 3) Implementation feasibility in children's hospital, 4) Safety considerations for pediatric use. Return only a number.",
},
});
// Example 2: Clinical Note Summarization
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "start_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
type: "summarize",
sourceColumns: ["Clinical_Notes"],
targetColumn: "Note_Summary",
},
});
// Example 3: Patient Satisfaction Analysis
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "start_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
type: "sentiment",
sourceColumns: ["Patient_Feedback"],
targetColumn: "Satisfaction_Score",
},
});
// Example 4: Protocol Compliance Scoring
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "start_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
type: "custom",
sourceColumns: ["Protocol_Steps", "Documentation", "Outcomes"],
targetColumn: "Compliance_Score",
customGoal:
"Score protocol compliance 1-100. Consider: 1) Adherence to required steps, 2) Documentation completeness, 3) Safety measures followed, 4) Outcome reporting. Return only a number.",
},
});
// Example 5: Research Impact Assessment
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "start_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
type: "custom",
sourceColumns: ["Research_Findings", "Clinical_Applications"],
targetColumn: "Impact_Score",
customGoal:
"Score research impact 1-100 based on potential benefit to pediatric healthcare. Consider: 1) Clinical relevance, 2) Implementation potential, 3) Patient outcome improvement, 4) Cost-effectiveness. Return only a number.",
},
});
// Monitor Analysis Progress
const status = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "get_job_status",
arguments: {
sheet_id: "your-sheet-id",
jobId: "job-id-from-start-analysis",
},
});
// Cancel Analysis if Needed
const cancel = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "cancel_batch_analysis",
arguments: {
sheet_id: "your-sheet-id",
jobId: "job-id-to-cancel",
},
});列の管理
// Add a new column
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_add_column",
arguments: {
sheet_id: "your-sheet-id",
title: "New Column",
type: "TEXT_NUMBER",
index: 2, // Optional position
validation: true, // Optional
formula: "=[Column1]+ [Column2]", // Optional
},
});
// Delete a column
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_delete_column",
arguments: {
sheet_id: "your-sheet-id",
column_id: "1234567890",
validate_dependencies: true, // Optional, default true
},
});
// Rename a column
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_rename_column",
arguments: {
sheet_id: "your-sheet-id",
column_id: "1234567890",
new_title: "Updated Column Name",
update_references: true, // Optional, default true
},
});条件付き一括更新
smartsheet_bulk_updateツールは、強力な条件付き更新機能を提供します。以下に、単純なものから複雑なものまで、さまざまな例を示します。
単純な条件の例
// Example 1: Basic equals comparison
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [{
conditions: [{
columnId: "status-column-id",
operator: "equals",
value: "Pending"
}],
updates: [{
columnId: "status-column-id",
value: "In Progress"
}]
}]
}
});
// Example 2: Contains text search
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [{
conditions: [{
columnId: "description-column-id",
operator: "contains",
value: "urgent"
}],
updates: [{
columnId: "priority-column-id",
value: "High"
}]
}]
}
});
// Example 3: Empty value check
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [{
conditions: [{
columnId: "assignee-column-id",
operator: "isEmpty"
}],
updates: [{
columnId: "status-column-id",
value: "Unassigned"
}]
}]
}
});型固有の比較
// Example 1: Date comparison
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [
{
conditions: [
{
columnId: "due-date-column-id",
operator: "lessThan",
value: "2025-02-01T00:00:00Z", // ISO date format
},
],
updates: [
{
columnId: "status-column-id",
value: "Due Soon",
},
],
},
],
},
});
// Example 2: Numeric comparison
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [
{
conditions: [
{
columnId: "progress-column-id",
operator: "greaterThan",
value: 80, // Numeric value
},
],
updates: [
{
columnId: "status-column-id",
value: "Nearly Complete",
},
],
},
],
},
});
// Example 3: Picklist validation
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [
{
conditions: [
{
columnId: "category-column-id",
operator: "equals",
value: "Bug", // Must match picklist option exactly
},
],
updates: [
{
columnId: "priority-column-id",
value: "High",
},
],
},
],
},
});複雑な複数条件の例
// Example 1: Multiple conditions with different operators
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [
{
conditions: [
{
columnId: "priority-column-id",
operator: "equals",
value: "High",
},
{
columnId: "due-date-column-id",
operator: "lessThan",
value: "2025-02-01T00:00:00Z",
},
{
columnId: "progress-column-id",
operator: "lessThan",
value: 50,
},
],
updates: [
{
columnId: "status-column-id",
value: "At Risk",
},
{
columnId: "flag-column-id",
value: true,
},
],
},
],
},
});
// Example 2: Multiple rules with batch processing
const result = await use_mcp_tool({
server_name: "smartsheet",
tool_name: "smartsheet_bulk_update",
arguments: {
sheet_id: "your-sheet-id",
rules: [
{
conditions: [
{
columnId: "status-column-id",
operator: "equals",
value: "Complete",
},
{
columnId: "qa-status-column-id",
operator: "isEmpty",
},
],
updates: [
{
columnId: "qa-status-column-id",
value: "Ready for QA",
},
],
},
{
conditions: [
{
columnId: "status-column-id",
operator: "equals",
value: "In Progress",
},
{
columnId: "progress-column-id",
operator: "equals",
value: 100,
},
],
updates: [
{
columnId: "status-column-id",
value: "Complete",
},
],
},
],
options: {
lenientMode: true, // Continue on errors
batchSize: 100, // Process in smaller batches
},
},
});一括更新操作では次の機能が提供されます。
オペレーターサポート:
equals: 正確な値の一致contains: 部分文字列の一致greaterThan: 数値/日付の比較lessThan: 数値/日付の比較isEmpty: null/空チェックisNotEmpty: 現在の値チェック
タイプ固有の機能:
TEXT_NUMBER: 文字列と数値の比較
DATE: ISO日付の解析と比較
ピックリスト: オプション検証
チェックボックス: ブール処理
処理オプション:
batchSize: 更新バッチサイズを制御する(デフォルトは500)lenientMode: エラーが発生しても続行するリクエストごとに複数のルール
ルールごとに複数の更新
結果追跡:
試行された行の合計数
成功/失敗のカウント
詳細なエラー情報
行ごとの障害の詳細
発達
自動リビルドを使用した開発の場合:
npm run watchデバッグ
MCPサーバーはstdio経由で通信するため、デバッグが困難になる場合があります。サーバーは包括的なエラーログを実装し、MCPプロトコルを通じて詳細なエラーメッセージを提供します。
主なデバッグ機能:
stderrへのエラーログ
MCP 応答の詳細なエラー メッセージ
複数レベルでの型検証
包括的な運用結果レポート
列操作の依存性分析
数式参照の追跡
エラー処理
サーバーは、多層エラー処理アプローチを実装します。
MCPレイヤー
ツールパラメータを検証する
プロトコルレベルのエラーを処理する
フォーマットされたエラー応答を提供する
タイムアウトと再試行を管理する
CLIレイヤー
コマンド引数を検証する
実行エラーを処理する
エラーメッセージをJSONとしてフォーマットします
列操作を検証する
運用レイヤー
Smartsheet API エラーを処理します
データ型と形式を検証する
詳細なエラーコンテキストを提供する
列の依存関係を管理する
数式参照を検証する
データの整合性を保証する
貢献
貢献を歓迎します!以下の点にご注意ください。
TypeScript/Pythonコードは既存のスタイルに従います
新しい機能には適切なエラー処理が含まれる
変更により下位互換性が維持される
更新には適切なドキュメントが含まれます
列操作はデータの整合性を維持します
数式参照は適切に処理されます