diff --git a/content/guides/sheets/features/hyper-link.ja-JP.mdx b/content/guides/sheets/features/hyper-link.ja-JP.mdx index 5a100f1..9d1b7b5 100644 --- a/content/guides/sheets/features/hyper-link.ja-JP.mdx +++ b/content/guides/sheets/features/hyper-link.ja-JP.mdx @@ -138,62 +138,89 @@ univer.registerPlugin(UniverSheetsHyperLinkUIPlugin, { import '@univerjs/sheets-hyper-link/facade' ``` -### ハイパーリンクの生成・解析・ジャンプ +`navigateToSheetHyperlink` API は UI プラグインに含まれるため、次をインポートしてください: ```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const sheets = fWorkbook.getSheets() +import '@univerjs/sheets-hyper-link-ui/facade' +``` -// 最初のシートのセル F6 へのハイパーリンクを作成します -const sheet1 = sheets[0] -const range = sheet1.getRange('F6') -const hyperlink = range.getUrl() +### ハイパーリンクの作成 -// ハイパーリンクを解析します -const hyperlinkInfo = fWorkbook.parseSheetHyperlink(hyperlink) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getSheetByName('Sheet1') +if (!fWorksheet) return -// 2 番目のシートに切り替えます -fWorkbook.setActiveSheet(sheets[1]) -fWorkbook.getActiveSheet().getSheetName() +// セル A1 に Univer へのハイパーリンクを作成します +const fRange = fWorksheet.getRange('A1') +await fRange.setHyperLink('https://univer.ai/', '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') +``` -// 3 秒後にハイパーリンクへ移動します -setTimeout(() => { - fWorkbook.navigateToSheetHyperlink(hyperlink) - fWorkbook.getActiveSheet().getSheetName() -}, 3000) +### ハイパーリンクの取得・更新・解除 + +```typescript +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]) +} ``` -### セル内ハイパーリンクの操作 +### ハイパーリンクの構築・解析・ジャンプ ```typescript const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() +const sheets = fWorkbook.getSheets() -// セル A1 に Univer へのハイパーリンクを作成します -const fRange = fWorksheet.getRange('A1') -const richText = univerAPI.newRichText().insertLink('Univer', 'https://univer.ai/') -fRange.setRichTextValueForCell(richText) - -// 現在のセル内のハイパーリンクを取得します -const cellValue = fRange.getValue(true) -const hyperlinks = cellValue.getLinks() - -// 3 秒後にハイパーリンクを更新します -setTimeout(() => { - const id = hyperlinks[0].rangeId - const newUrl = 'https://insight.univer.ai/' - const newRichText = cellValue.copy().updateLink(id, newUrl) - fRange.setRichTextValueForCell(newRichText) -}, 3000) - -// 6 秒後にハイパーリンクを解除します -setTimeout(() => { - const newCellValue = fRange.getValue(true) - const newHyperlinks = newCellValue.getLinks() - const id = newHyperlinks[0].rangeId - const newRichText = newCellValue.copy().cancelLink(id) - fRange.setRichTextValueForCell(newRichText) -}, 6000) +// 最初のシートのセル 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()) ``` ### Event Listeners diff --git a/content/guides/sheets/features/hyper-link.mdx b/content/guides/sheets/features/hyper-link.mdx index b585583..7bd5034 100644 --- a/content/guides/sheets/features/hyper-link.mdx +++ b/content/guides/sheets/features/hyper-link.mdx @@ -138,62 +138,89 @@ Complete Facade API type definitions can be found in the [FacadeAPI](https://ref import '@univerjs/sheets-hyper-link/facade' ``` -### Build/Parse/Jump HyperLink +The `navigateToSheetHyperlink` API is provided by the UI plugin, so import: ```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const sheets = fWorkbook.getSheets() +import '@univerjs/sheets-hyper-link-ui/facade' +``` -// Create a hyperlink to the cell F6 in the first sheet -const sheet1 = sheets[0] -const range = sheet1.getRange('F6') -const hyperlink = range.getUrl() +### Create HyperLink -// Parse the hyperlink -const hyperlinkInfo = fWorkbook.parseSheetHyperlink(hyperlink) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getSheetByName('Sheet1') +if (!fWorksheet) return -// Switch to the second sheet -fWorkbook.setActiveSheet(sheets[1]) -fWorkbook.getActiveSheet().getSheetName() +// Create a hyperlink to Univer on cell A1 +const fRange = fWorksheet.getRange('A1') +await fRange.setHyperLink('https://univer.ai/', 'Univer') + +// Create a hyperlink to active sheet range B2:D4 on cell A2 +const fRange2 = fWorksheet.getRange('A2') +const rangeUrl = fWorksheet.getRange('B2:D4').getUrl() +await fRange2.setHyperLink(rangeUrl, 'Link to B2:D4') + +// Create a hyperlink to another sheet range on cell 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') +} + +// Create a hyperlink to a defined name on cell A4 +const fRange4 = fWorksheet.getRange('A4') +const definedNameHyperlinkUrl = fWorkbook.getUrlOfDefineName('MyDefinedName') +await fRange4.setHyperLink(definedNameHyperlinkUrl, 'Link to MyDefinedName') +``` + +### Get/Update/Cancel HyperLink -// Navigate to the hyperlink after 3 seconds -setTimeout(() => { - fWorkbook.navigateToSheetHyperlink(hyperlink) - fWorkbook.getActiveSheet().getSheetName() -}, 3000) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getSheetByName('Sheet1') +if (!fWorksheet) return + +// Get all hyperlinks in the range A1:D10 +const fRange = fWorksheet.getRange('A1:D10') +const hyperlinks = fRange.getHyperLinks() +console.log(hyperlinks) + +// Update the hyperlink on cell A1 +const cellA1 = fWorksheet.getRange('A1') +const rangeUrl = fWorksheet.getRange('B2:D4').getUrl() +await cellA1.updateHyperLink(rangeUrl, 'Link to B2:D4') + +// Clear all hyperlinks in the range A1:D10 +fRange.cancelHyperLink() + +// Or clear a specific hyperlink in the range A1:D10 +if (hyperlinks.length > 1) { + fRange.cancelHyperLink(hyperlinks[1]) +} ``` -### Manipulating Hyperlinks in Cells +### Build/Parse/Jump HyperLink ```typescript const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() +const sheets = fWorkbook.getSheets() -// Create a hyperlink to Univer on cell A1 -const fRange = fWorksheet.getRange('A1') -const richText = univerAPI.newRichText().insertLink('Univer', 'https://univer.ai/') -fRange.setRichTextValueForCell(richText) - -// Query the hyperlinks in the current cell -const cellValue = fRange.getValue(true) -const hyperlinks = cellValue.getLinks() - -// Update hyperlink after 3 seconds -setTimeout(() => { - const id = hyperlinks[0].rangeId - const newUrl = 'https://insight.univer.ai/' - const newRichText = cellValue.copy().updateLink(id, newUrl) - fRange.setRichTextValueForCell(newRichText) -}, 3000) - -// Cancel hyperlink after 6 seconds -setTimeout(() => { - const newCellValue = fRange.getValue(true) - const newHyperlinks = newCellValue.getLinks() - const id = newHyperlinks[0].rangeId - const newRichText = newCellValue.copy().cancelLink(id) - fRange.setRichTextValueForCell(newRichText) -}, 6000) +// Build a hyperlink url pointing to cell F6 of the first sheet +const hyperlinkUrl = sheets[0].getRange('F6').getUrl() + +// Parse the hyperlink +const hyperlinkInfo = fWorkbook.parseSheetHyperlink(hyperlinkUrl) +console.log(hyperlinkInfo) + +// Switch to the second sheet +fWorkbook.setActiveSheet(sheets[1]) +console.log(fWorkbook.getActiveSheet().getSheetName()) + +// Jump to the hyperlink after 3 seconds +await new Promise(resolve => setTimeout(resolve, 3000)) +fWorkbook.navigateToSheetHyperlink(hyperlinkUrl) +console.log(fWorkbook.getActiveSheet().getSheetName()) ``` ### Event Listeners diff --git a/content/guides/sheets/features/hyper-link.zh-CN.mdx b/content/guides/sheets/features/hyper-link.zh-CN.mdx index ca7001d..da06c76 100644 --- a/content/guides/sheets/features/hyper-link.zh-CN.mdx +++ b/content/guides/sheets/features/hyper-link.zh-CN.mdx @@ -138,62 +138,89 @@ univer.registerPlugin(UniverSheetsHyperLinkUIPlugin, { import '@univerjs/sheets-hyper-link/facade' ``` +`navigateToSheetHyperlink` api 在 ui 插件中,需引入: + +```typescript +import '@univerjs/sheets-hyper-link-ui/facade' +``` + +### 创建超链接 + +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getSheetByName('Sheet1') +if (!fWorksheet) return + +// 创建一个指向 Univer 的超链接在 A1 单元格 +const fRange = fWorksheet.getRange('A1') +await fRange.setHyperLink('https://univer.ai/', 'Univer') + +// 创建一个指向 Sheet1 的 B2:D4 区域的超链接在 A2 单元格 +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') +``` + +### 获取/更新/取消超链接 + +```typescript +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]) +} +``` + ### 构建/解析/跳转 ```typescript const fWorkbook = univerAPI.getActiveWorkbook() const sheets = fWorkbook.getSheets() -// 创建一个到第一个工作表的 F6 单元格的超链接 -const sheet1 = sheets[0] -const range = sheet1.getRange('F6') -const hyperlink = range.getUrl() +// 构建一个指向第一个工作表的 F6 单元格的超链接 url +const hyperlinkUrl = sheets[0].getRange('F6').getUrl() // 解析超链接 -const hyperlinkInfo = fWorkbook.parseSheetHyperlink(hyperlink) +const hyperlinkInfo = fWorkbook.parseSheetHyperlink(hyperlinkUrl) +console.log(hyperlinkInfo) // 切换到第二个工作表 fWorkbook.setActiveSheet(sheets[1]) -fWorkbook.getActiveSheet().getSheetName() +console.log(fWorkbook.getActiveSheet().getSheetName()) // 3 秒后跳转到超链接 -setTimeout(() => { - fWorkbook.navigateToSheetHyperlink(hyperlink) - fWorkbook.getActiveSheet().getSheetName() -}, 3000) -``` - -### 在单元格上操作超链接 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() - -// 在 A1 单元格创建一个指向 Univer 的超链接 -const fRange = fWorksheet.getRange('A1') -const richText = univerAPI.newRichText().insertLink('Univer', 'https://univer.ai/') -fRange.setRichTextValueForCell(richText) - -// 查询当前单元格中的超链接 -const cellValue = fRange.getValue(true) -const hyperlinks = cellValue.getLinks() - -// 3 秒后更新超链接 -setTimeout(() => { - const id = hyperlinks[0].rangeId - const newUrl = 'https://insight.univer.ai/' - const newRichText = cellValue.copy().updateLink(id, newUrl) - fRange.setRichTextValueForCell(newRichText) -}, 3000) - -// 6 秒后取消超链接 -setTimeout(() => { - const newCellValue = fRange.getValue(true) - const newHyperlinks = newCellValue.getLinks() - const id = newHyperlinks[0].rangeId - const newRichText = newCellValue.copy().cancelLink(id) - fRange.setRichTextValueForCell(newRichText) -}, 6000) +await new Promise(resolve => setTimeout(resolve, 3000)) +fWorkbook.navigateToSheetHyperlink(hyperlinkUrl) +console.log(fWorkbook.getActiveSheet().getSheetName()) ``` ### 事件监听 diff --git a/content/guides/sheets/features/hyper-link.zh-TW.mdx b/content/guides/sheets/features/hyper-link.zh-TW.mdx index bbc5422..3f99613 100644 --- a/content/guides/sheets/features/hyper-link.zh-TW.mdx +++ b/content/guides/sheets/features/hyper-link.zh-TW.mdx @@ -138,62 +138,89 @@ univer.registerPlugin(UniverSheetsHyperLinkUIPlugin, { import '@univerjs/sheets-hyper-link/facade' ``` +`navigateToSheetHyperlink` API 位於 UI 外掛中,需引入: + +```typescript +import '@univerjs/sheets-hyper-link-ui/facade' +``` + +### 建立超連結 + +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getSheetByName('Sheet1') +if (!fWorksheet) return + +// 在 A1 單元格建立一個指向 Univer 的超連結 +const fRange = fWorksheet.getRange('A1') +await fRange.setHyperLink('https://univer.ai/', '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') +``` + +### 取得/更新/取消超連結 + +```typescript +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]) +} +``` + ### 構建/解析/跳轉 ```typescript const fWorkbook = univerAPI.getActiveWorkbook() const sheets = fWorkbook.getSheets() -// 建立一個到第一個工作表的 F6 單元格的超連結 -const sheet1 = sheets[0] -const range = sheet1.getRange('F6') -const hyperlink = range.getUrl() +// 構建一個指向第一個工作表 F6 單元格的超連結 url +const hyperlinkUrl = sheets[0].getRange('F6').getUrl() // 解析超連結 -const hyperlinkInfo = fWorkbook.parseSheetHyperlink(hyperlink) +const hyperlinkInfo = fWorkbook.parseSheetHyperlink(hyperlinkUrl) +console.log(hyperlinkInfo) // 切換到第二個工作表 fWorkbook.setActiveSheet(sheets[1]) -fWorkbook.getActiveSheet().getSheetName() +console.log(fWorkbook.getActiveSheet().getSheetName()) // 3 秒後跳轉到超連結 -setTimeout(() => { - fWorkbook.navigateToSheetHyperlink(hyperlink) - fWorkbook.getActiveSheet().getSheetName() -}, 3000) -``` - -### 在單元格上操作超連結 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() - -// 在 A1 單元格建立一個指向 Univer 的超連結 -const fRange = fWorksheet.getRange('A1') -const richText = univerAPI.newRichText().insertLink('Univer', 'https://univer.ai/') -fRange.setRichTextValueForCell(richText) - -// 查詢當前單元格中的超連結 -const cellValue = fRange.getValue(true) -const hyperlinks = cellValue.getLinks() - -// 3 秒後更新超連結 -setTimeout(() => { - const id = hyperlinks[0].rangeId - const newUrl = 'https://insight.univer.ai/' - const newRichText = cellValue.copy().updateLink(id, newUrl) - fRange.setRichTextValueForCell(newRichText) -}, 3000) - -// 6 秒後取消超連結 -setTimeout(() => { - const newCellValue = fRange.getValue(true) - const newHyperlinks = newCellValue.getLinks() - const id = newHyperlinks[0].rangeId - const newRichText = newCellValue.copy().cancelLink(id) - fRange.setRichTextValueForCell(newRichText) -}, 6000) +await new Promise(resolve => setTimeout(resolve, 3000)) +fWorkbook.navigateToSheetHyperlink(hyperlinkUrl) +console.log(fWorkbook.getActiveSheet().getSheetName()) ``` ### 事件監聽