[英]Unlink all hyperlinks from a sheet
我正在尝试取消链接 Google 电子表格中的所有超链接,到目前为止,我正在尝试进行搜索并替换下面的代码,但想知道是否有特定的 function 来执行取消链接?
function replacelinks(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Links");
var values = sheet.getDataRange().getValues();
replaceInSheet(values, '.com', '');
replaceInSheet(values, '.net', '');
我相信你的目标如下。
为此,这个答案怎么样?
不幸的是,在现阶段,似乎没有直接删除单元格和文本的超链接的方法。 因此,为了实现您的目标,我想提出一个解决方法。 此解决方法的流程如下。
请将以下脚本复制并粘贴到脚本编辑器中。 并且, 请在高级 Google 服务中启用表格 API 。 并请设置要删除超链接的工作表名称。
function myFunction() {
const sheetName = "Sheet1"; // Please set the sheet name.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(sheetName);
const sheetId = sheet.getSheetId();
const range = sheet.getDataRange();
const temp = ss.insertSheet();
const tempId = temp.getSheetId();
range.copyTo(temp.getRange("A1"), {contentsOnly: true});
const requests = range.getRichTextValues().reduce((ar, row, i) => {
row.forEach((col, j) => {
const runs = col.getRuns();
if (col.getLinkUrl() || (runs && runs.some(e => e.getLinkUrl()))) {
const req1 = {updateCells:{range:{sheetId:sheetId,startRowIndex:i,endRowIndex:i + 1,startColumnIndex:j,endColumnIndex:j + 1},fields:"userEnteredValue"}};
const req2 = {copyPaste:{
source:{sheetId:tempId,startRowIndex:i,endRowIndex:i + 1,startColumnIndex:j,endColumnIndex:j + 1},
destination:{sheetId:sheetId,startRowIndex:i,endRowIndex:i + 1,startColumnIndex:j,endColumnIndex:j + 1},
pasteType:"PASTE_NORMAL"
}};
ar = ar.concat(req1, req2);
}
});
return ar;
}, []);
Sheets.Spreadsheets.batchUpdate({requests: requests}, ss.getId());
ss.deleteSheet(temp);
}
HYPERLINK()
的超链接。getRichTextValues()
无法检索数字值。 这样,当数值有超链接时,这些超链接不能被删除。 关于这个问题,我已经向问题跟踪器报告了。 参考所以当这个问题被删除时,我认为使用上面的脚本,所有的超链接都可以被删除。 或者,现阶段,上述脚本中使用的getLinkUrl()
方法并未包含在官方文档中。 所以我也认为在以后的更新中可能会增加直接删除超链接的方法。对我有帮助的是将范围的setShowHyperlink
设置为 false。
例子:
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ws = ss.getActiveSheet();
const range = ws.getRange(lastRow, 1)
range.setValue('https://example.com');
range.setShowHyperlink(false);
但是一旦你双击这样的单元格,谷歌就会重新应用超链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.