[]
SpreadJSの共同編集時のユーザー権限には、閲覧モード と 編集モード の 2 つのドキュメントモードがあります。権限機能を使用すると、ワークブックは 閲覧モード で特定のオペレーション権限を設定でき、共同編集環境における柔軟性とセキュリティのバランスを取れます。
IPermission インターフェイスは、ワークブックの特定のアクセス許可を定義します。これには、次のプロパティが含まれます。
mode: BrowsingMode
ワークブックのアクセスモードを指定します。値は BrowsingMode 列挙型のいずれかを指定します。
BrowsingMode.edit: ワークブックを編集できます。
BrowsingMode.view: ワークブックは閲覧専用ですが、追加のアクセス許可が付与されている場合があります。
viewModePermissions: PermissionTypes (省略可能)
ワークブックが view モードの場合の追加のアクセス許可を指定します。このプロパティはビットフィールドであり、複数の PermissionTypes 値をビット演算で結合できます。
export type IPermission {
mode: GC.Spread.Sheets.Collaboration.BrowsingMode;
viewModePermissions?: GC.Spread.Sheets.Collaboration.PermissionTypes;
}ワークブックの閲覧モードを定義します。
edit = 0: 編集モード。ワークブックを変更できます。
view = 1: 閲覧モード。ワークブックは読み取り専用です。
/**
* ドキュメント操作のための browsing mode を列挙します。
* @enum {number}
*/
export enum BrowsingMode {
/** ワークブックを編集できます。
* @type {number}
*/
edit,
/** ワークブックは閲覧専用です。
* @type {number}
*/
view,
}ワークブックは制限のない編集権限を持ちます。
すべての変更は、他の共同編集者とリアルタイムで同期されます。
これはワークブックの デフォルトモード です。
ワークブックは閲覧専用です。
一部の UI オペレーション(例: 行の非表示、列幅の調整)は権限で有効化できますが、これらのオペレーションは ローカルにのみ反映され、同期されません。
閲覧モード では、既定で元に戻せるコマンドはすべて無効になります。ただし、ユーザーは次の権限をカスタマイズして特定のオペレーションを許可することができ、データの整合性を損なわずに閲覧体験を最適化できます。
allowNonDataModifyingOperations: 閲覧者がデータを変更しないオペレーションを実行できるようにします。
allowHideRowsOrColumns: 行/列の非表示または再表示を許可します。
allowResizeRowsOrColumns: 行/列サイズの変更を許可します。
allowFilter: データのフィルタリングを許可します。
allowSort: データの並べ替えを許可します。
閲覧モードでは、すべてのコマンド操作(組み込みコマンドおよびユーザー定義コマンドを含む)は制限されますが、API の呼び出しは制限されません。
閲覧モードでは、権限で有効化したオペレーションにより発生するデータ変更はローカルにのみ反映され、同期されません。
データの閲覧: 閲覧モード のワークブックでは、他のユーザーのワークブックに影響を与えることなく、UI(例: 行の非表示、データのフィルタリング)を調整してデータを分析することができます。
セキュリティ: きめ細かい権限制御により、不正な変更を防ぎ、共同編集環境でデータを保護します。
チーム共同編集: ステータス追跡と組み合わせることで、ユーザーは自身の操作を管理しながら、他のユーザーの操作状況を確認できます。
ユーザーは UserManager.current と setPermission メソッドを使用してユーザー情報をワークブックにバインドできます。または、bindPresence メソッドを使用して、プレゼンスとユーザー情報を同時にワークブックへバインドできます。
次の例は、アクティブユーザーとワークブック権限を閲覧モードに設定し、行/列の非表示/再表示、行/列サイズの変更、およびデータのフィルタリングを許可する方法を示します。
ワークブックとユーザー情報を初期化します。
// 現在のユーザーを設定します。
GC.Spread.Common.UserManager.current("896736#B1WZd2yQ");
const workbook = new GC.Spread.Sheets.Workbook("ss");
// ワークブックの権限を設定します。
workbook.collaboration.setPermission({
mode: GC.Spread.Sheets.Collaboration.BrowsingMode.view,
viewModePermissions: GC.Spread.Sheets.Collaboration.PermissionTypes.allowHideRowsOrColumns
| GC.Spread.Sheets.Collaboration.PermissionTypes.allowResizeRowsOrColumns
| GC.Spread.Sheets.Collaboration.PermissionTypes.allowFilter
});権限情報とともに、プレゼンスとユーザー情報の両方をワークブックにバインドします。
const presence = new Presence<IPresence>(conn);
const workbook = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 2 });
const user = {
id: "896736#B1WZd2yQ",
name: "chris",
color: "#FF0000",
permission: {
mode: GC.Spread.Sheets.Collaboration.BrowsingMode.view,
viewModePermissions: GC.Spread.Sheets.Collaboration.PermissionTypes.allowHideRowsOrColumns
| GC.Spread.Sheets.Collaboration.PermissionTypes.allowResizeRowsOrColumns
| GC.Spread.Sheets.Collaboration.PermissionTypes.allowFilter
}
};
bindPresence(workbook, presence, user);