ハイパーリンク
ハイパーリンクは、スプレッドシート内の内部ワークシートやセル、外部のウェブページやメールアドレスなどのコンテンツへ素早く移動・アクセスするために使用されます。
プラグインモード
インストール
pnpm add @univerjs/sheets-hyper-link @univerjs/sheets-hyper-link-uinpm install @univerjs/sheets-hyper-link @univerjs/sheets-hyper-link-uiyarn add @univerjs/sheets-hyper-link @univerjs/sheets-hyper-link-uibun add @univerjs/sheets-hyper-link @univerjs/sheets-hyper-link-ui使い方
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import { UniverSheetsHyperLinkPlugin } from '@univerjs/sheets-hyper-link'import { UniverSheetsHyperLinkUIPlugin } from '@univerjs/sheets-hyper-link-ui'import SheetsHyperLinkUIJaJP from '@univerjs/sheets-hyper-link-ui/locale/ja-JP'import '@univerjs/sheets-hyper-link-ui/lib/index.css'import '@univerjs/sheets-hyper-link/facade'import '@univerjs/sheets-hyper-link-ui/facade'const univer = new Univer({ locale: LocaleType.JA_JP, locales: { [LocaleType.JA_JP]: mergeLocales( SheetsHyperLinkUIJaJP, ), },})univer.registerPlugin(UniverSheetsHyperLinkPlugin)univer.registerPlugin(UniverSheetsHyperLinkUIPlugin)プラグインと設定
univer.registerPlugin(UniverSheetsHyperLinkUIPlugin, { // 外部リンクの開き方をカスタマイズします urlHandler: { navigateToOtherWebsite: url => window.open(`${url}?utm_source=univer`, '_blank'), },})完全な設定オプションは IUniverSheetsHyperLinkUIConfig で確認できます。
モバイル対応
まずモバイルエディターを設定します。このページのプラグインモードの初期化コードで、以下のデスクトップ登録を同じパッケージのモバイル版に置き換え、文書を開く前に完了してください。モデル、スタイル、言語ファイル、Facade は維持し、両方を同時に登録しないでください。
| パッケージ | デスクトップの登録 | モバイルの登録 |
|---|---|---|
@univerjs/sheets-hyper-link-ui | UniverSheetsHyperLinkUIPlugin | UniverSheetsHyperLinkMobileUIPlugin |
プリセットモード
インストール
pnpm add @univerjs/preset-sheets-hyper-linknpm install @univerjs/preset-sheets-hyper-linkyarn add @univerjs/preset-sheets-hyper-linkbun add @univerjs/preset-sheets-hyper-link使い方
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'import UniverPresetSheetsCoreJaJP from '@univerjs/preset-sheets-core/locales/ja-JP'import { UniverSheetsHyperLinkPreset } from '@univerjs/preset-sheets-hyper-link'import UniverPresetSheetsHyperLinkJaJP from '@univerjs/preset-sheets-hyper-link/locales/ja-JP'import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'import '@univerjs/preset-sheets-core/lib/index.css'import '@univerjs/preset-sheets-hyper-link/lib/index.css'const { univerAPI } = createUniver({ locale: LocaleType.JA_JP, locales: { [LocaleType.JA_JP]: mergeLocales( UniverPresetSheetsCoreJaJP, UniverPresetSheetsHyperLinkJaJP, ), }, presets: [ UniverSheetsCorePreset(), UniverSheetsHyperLinkPreset(), ],})プリセットと設定
UniverSheetsHyperLinkPreset({ // 外部リンクの開き方をカスタマイズします urlHandler: { navigateToOtherWebsite: url => window.open(`${url}?utm_source=univer`, '_blank'), },})完全な設定オプションは IUniverSheetsHyperLinkPresetConfig で確認できます。
Facade API
完全な Facade API の型定義は FacadeAPI で確認できます。
インポート
プラグインモード注意
Facade パッケージの手動 import が必要なのはプラグインモードのみです。プリセットモードには対応する Facade パッケージが内蔵されているため、追加の import は不要です。
import '@univerjs/sheets-hyper-link/facade'navigateToSheetHyperlink API は UI プラグインに含まれるため、次をインポートしてください:
import '@univerjs/sheets-hyper-link-ui/facade'ハイパーリンクの作成
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getSheetByName('Sheet1')if (!fWorksheet) return// セル A1 に Univer へのハイパーリンクを作成しますconst fRange = fWorksheet.getRange('A1')await fRange.setHyperLink('//', 'Univer')// セル A2 に Sheet1 の範囲 B2:D4 へのハイパーリンクを作成しますconst fRange2 = fWorksheet.getRange('A2')const rangeUrl = fWorksheet.getRange('B2:D4').getUrl()await fRange2.setHyperLink(rangeUrl, 'Link to B2:D4')// セル A3 に別のシート範囲へのハイパーリンクを作成しますconst anotherSheet = fWorkbook.getSheetByName('Another Sheet')if (anotherSheet) { const fRange3 = fWorksheet.getRange('A3') const anotherSheetUrl = anotherSheet.getUrl() await fRange3.setHyperLink(anotherSheetUrl, 'Link to Another Sheet')}// セル A4 に定義名へのハイパーリンクを作成しますconst fRange4 = fWorksheet.getRange('A4')const definedNameHyperlinkUrl = fWorkbook.getUrlOfDefineName('MyDefinedName')await fRange4.setHyperLink(definedNameHyperlinkUrl, 'Link to MyDefinedName')ハイパーリンクの取得・更新・解除
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getSheetByName('Sheet1')if (!fWorksheet) return// 範囲 A1:D10 内のすべてのハイパーリンクを取得しますconst fRange = fWorksheet.getRange('A1:D10')const hyperlinks = fRange.getHyperLinks()console.log(hyperlinks)// セル A1 のハイパーリンクを更新しますconst cellA1 = fWorksheet.getRange('A1')const rangeUrl = fWorksheet.getRange('B2:D4').getUrl()await cellA1.updateHyperLink(rangeUrl, 'Link to B2:D4')// 範囲 A1:D10 内のすべてのハイパーリンクを解除しますfRange.cancelHyperLink()// または、範囲 A1:D10 内の特定のハイパーリンクを解除しますif (hyperlinks.length > 1) { fRange.cancelHyperLink(hyperlinks[1])}ハイパーリンクの構築・解析・ジャンプ
const fWorkbook = univerAPI.getActiveWorkbook()const sheets = fWorkbook.getSheets()// 最初のシートのセル F6 を指すハイパーリンク URL を構築しますconst hyperlinkUrl = sheets[0].getRange('F6').getUrl()// ハイパーリンクを解析しますconst hyperlinkInfo = fWorkbook.parseSheetHyperlink(hyperlinkUrl)console.log(hyperlinkInfo)// 2 番目のシートに切り替えますfWorkbook.setActiveSheet(sheets[1])console.log(fWorkbook.getActiveSheet().getSheetName())// 3 秒後にハイパーリンクへ移動しますawait new Promise(resolve => setTimeout(resolve, 3000))fWorkbook.navigateToSheetHyperlink(hyperlinkUrl)console.log(fWorkbook.getActiveSheet().getSheetName())イベントリスナー
イベントの型定義は Events を参照してください。
ハイパーリンクに関するイベントは univerAPI.addEvent() で監視できます。
リンク追加イベント
univerAPI.Event.BeforeSheetLinkAdd: リンク追加の前にトリガーします
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetLinkAdd, (params) => { const { workbook, worksheet, row, col, link } = params // シートへのリンク追加操作をキャンセルします params.cancel = true})// Remove the event listener, use `disposable.dispose()`リンク更新イベント
univerAPI.Event.BeforeSheetLinkUpdate: リンク更新の前にトリガーします
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetLinkUpdate, (params) => { const { workbook, worksheet, row, column, id, payload } = params // シートのリンク更新操作をキャンセルします params.cancel = true})// Remove the event listener, use `disposable.dispose()`リンク削除イベント
univerAPI.Event.BeforeSheetLinkCancel: リンクを解除する前にトリガーします
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetLinkCancel, (params) => { const { workbook, worksheet, row, column, id } = params // シートのリンク解除操作をキャンセルします params.cancel = true})// Remove the event listener, use `disposable.dispose()`各イベントは次の共通パラメータを含みます:
workbook: 現在のワークブックインスタンスworksheet: 現在のワークシートインスタンスrow: リンクを含むセルの行インデックスcolumn: リンクを含むセルの列インデックス
特殊パラメータ:
BeforeSheetLinkAddイベントにはlinkが含まれます: 追加されるリンクBeforeSheetLinkUpdateイベントには次が含まれます:id: リンク識別子payload: 新しいリンクデータ
BeforeSheetLinkCancelイベントにはidが含まれます: 削除されるリンクの識別子
すべてのイベントコールバックで params.cancel = true を設定することで、該当する操作を防止できます。
このガイドはいかがですか?