Google apps script 取消与图纸的所有超链接
我正在尝试在Google电子表格中取消所有超链接,目前为止我正在尝试搜索并替换下面的代码,但是想知道是否有一个特定的函数来取消链接Google apps script 取消与图纸的所有超链接,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在尝试在Google电子表格中取消所有超链接,目前为止我正在尝试搜索并替换下面的代码,但是想知道是否有一个特定的函数来取消链接 function replacelinks(){ var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Links"); var values = sheet.getDataRange().getValues(); replaceInSheet(values, '.com'
function replacelinks(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Links");
var values = sheet.getDataRange().getValues();
replaceInSheet(values, '.com', '');
replaceInSheet(values, '.net', '');
我相信你的目标如下
- 您希望使用Google Apps脚本删除Google电子表格中工作表上的所有超链接
- 不幸的是,在现阶段,似乎没有直接删除单元格和文本超链接的方法。因此,为了实现您的目标,我想提出一个解决方案。此解决方案的流程如下所示
- 将要删除Google电子表格中超链接的工作表复制为临时工作表
- 从源工作表的数据范围中检索RichTextValue
- 检索包含超链接的单元坐标,并创建一个对象,以便使用Sheets API中的batchUpdate方法
- 使用创建的对象请求batchUpdate方法。
- 源工作表上具有超链接的单元格将被清除,相同坐标的值将从时间工作表复制到源工作表。这样,超链接就被删除了
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()