虽然我不确定你实际使用的是哪个电子表格,但从“我试图获取一组单元格的url,但它总是返回null”这句话中,我想在你的情况下,超链接可能设置在单元格文本的某个部分。因此,你可以尝试以下示例脚本:
示例脚本:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Liste");
var res = sheet
.getRange("A1")
.getRichTextValue()
.getRuns()
.reduce((ar, e) => {
var url = e.getLinkUrl();
if (url) ar.push({url: url, text: e.getText()});
return ar;
}, []);
console.log(res)
或者,如果您想从多个单元格中检索URL,您也可以使用以下脚本。
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Liste");
var res = sheet
.getRange("A1:A10")
.getRichTextValues()
.map((r, i) =>
r.flatMap((c, j) =>
c.getRuns().reduce((ar, e) => {
var url = e.getLinkUrl();
if (url) ar.push({ url: url, text: e.getText(), row: i + 1, col: j + 1 });
return ar;
}, [])
)
);
console.log(res)
var test3 = sheet.getRange("A1:A10").getRichTextValues();
返回 RichTextValue[][]
的对象。由此,在您的问题中获得了这样的结果。当您想要检索URL时,需要从该对象中检索它。
参考资料:
编辑:
从 the thing I try to obtain is this something like this : (which is the link to the cell A1) https://docs.google.com/spreadsheets/d/###/edit#gid=0&range=A1
, 我理解你想要检索单元格的超链接。在这种情况下,getRichTextValue
无法使用。那么,以下是一个示例脚本,您可以看一下:
示例脚本:
function myFunction() {
const columnToLetter = column => {
let temp,
letter = "";
while (column > 0) {
temp = (column - 1) % 26;
letter = String.fromCharCode(temp + 65) + letter;
column = (column - temp - 1) / 26;
}
return letter;
};
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Liste");
var range = sheet.getRange("A1:A10");
var spreadsheetUrl = ss.getUrl();
var sheetId = sheet.getSheetId();
var startRow = range.getRow();
var endRow = startRow + range.getNumRows() - 1;
var startCol = range.getColumn();
var endCol = startCol + range.getNumColumns() - 1;
var cellLinks = [];
for (var r = startRow; r <= endRow; r++) {
for (var c = startCol; c <= endCol; c++) {
var a1Notation = columnToLetter(c) + r;
cellLinks.push({cell: a1Notation, url: `${spreadsheetUrl}#gid=${sheetId}&range=${a1Notation}`});
}
}
console.log(cellLinks)
}
- 在上面的脚本中,返回了单元格"A1:A10"的超链接。例如,当使用
var range = sheet.getRange("A1");
时,仅返回单元格"A1"的超链接。