共同編集

プラグイン情報

複数のユーザーが同じ プレゼンテーション を編集し、互いの変更を確認できます。共同編集の統合に従ってバックエンド、認証、権限、ストレージを接続し、ライセンスを設定してください。

設定とドキュメントの読み込み

共同編集クイックスタートを参考に、既存の Slides エディターに Collaboration Client の設定を追加します。この例は Sheets を使用しています。バックエンドでは Slides ドキュメントを作成して永続化し、その ID をブラウザーに返してください。

文書を読み込む前に現在のユーザーを設定してください。詳細は共同編集の統合を参照してください。

TypeScript
import '@univerjs-pro/slides/facade'import { UserManagerService } from '@univerjs/core'import '@univerjs-pro/collaboration-client/facade'univer.__getInjector().get(UserManagerService).setCurrentUser({ userID, name, avatar })const document = await univerAPI.getCollaboration().loadSlideAsync('your-document-id')if (!document) throw new Error('Document could not be loaded')

ドキュメントを再度開く場合や共有する場合も、同じ ID を使います。サーバー上のドキュメントを読み込む代わりに、ローカルの空のドキュメントを作成しないでください。

同期状態、再送、競合の復旧を使い、保存状況の表示と再読み込み前の未確認編集の保護を実装できます。

共同編集ドキュメントの組み込み URL 読み込みの削除

注意

1.2.0 以降、Univer は共同編集ドキュメントの組み込み URL 読み込み処理を削除しました。URL の unit と type パラメーターを自動的に読み取って、共同編集ドキュメントを読み込むことはなくなりました。

アプリケーションがこの動作に依存している場合は、カスタムプラグインで復元できます。

カスタムプラグインの組み込み

以下の 4 つのファイルを、次のディレクトリ構成でプロジェクトにコピーしてください。

text
custom-url-load/├── plugin.ts├── controllers/│   └── data-loader.controller.ts└── services/    ├── url.service.ts    └── web-url.service.ts

エディターと共同編集プラグインの初期化後、現在のユーザーを設定してから CustomUrlLoadPlugin を登録します。

TypeScript
import { UserManagerService } from '@univerjs/core'import { CustomUrlLoadPlugin } from './custom-url-load/plugin'univer.__getInjector().get(UserManagerService).setCurrentUser({ userID, name, avatar })univer.registerPlugin(CustomUrlLoadPlugin)

登録後はプラグインがドキュメントを読み込むため、同じドキュメントに対して loadSlideAsync() を呼び出す必要はありません。すでに Facade で読み込んでいる場合は、前のセクションの方法を引き続き使用し、アプリケーションの要件に合わせて URL を処理できます。

プラグインの全コード

TypeScript
import { UniverCollaborationClientPlugin } from '@univerjs-pro/collaboration-client'import { DependentOn, Inject, Injector, Plugin } from '@univerjs/core'import { CollaborationDataLoaderController } from './controllers/data-loader.controller'import { IURLService } from './services/url.service'import { WebURLService } from './services/web-url.service'@DependentOn(UniverCollaborationClientPlugin)export class CustomUrlLoadPlugin extends Plugin {  static override pluginName = 'CUSTOM_URL_LOAD_PLUGIN'  constructor(    _config: undefined,    @Inject(Injector) protected override readonly _injector: Injector  ) {    super()  }  override onStarting(): void {    this._injector.add([IURLService, { useClass: WebURLService }])    this._injector.add([CollaborationDataLoaderController])    this.disposeWithMe(this._injector.get(IURLService))    this.disposeWithMe(this._injector.get(CollaborationDataLoaderController))  }}

同期と権限の確認

独立した 2 つのブラウザーセッションで同じ ID を開きます。一方でテキストを編集するか要素を移動し、もう一方に反映されることを確認します。ページの再読み込み、再接続、サービスの再起動後も内容が保持されることを確認してください。閲覧者アカウントと権限のないアカウントを使い、許可されていない書き込みと読み取りがサーバーで拒否されることも検証します。

編集履歴とインポート・エクスポートは別途設定が必要です。共同編集を導入しても自動的には有効になりません。

このガイドはいかがですか?

© 2026 DreamNum Co., Ltd.