[英]Google sheets script get cell Hyperlink
我正在嘗試獲取一系列單元格的 URL ,但getLinkUrl
始終返回null
。
這是我嘗試過的:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Liste");
var url = sheet.getRange("A1").getRichTextValue().getLinkUrl();
這將返回: null
var test = sheet.getRange("A1").getRichTextValue().getText();
這將返回: text
(這是 A1 中的文本,所以它正在工作,所以我嘗試了)
var test2 = sheet.getRange("A1").getRichTextValue().getLinkUrl();
這將返回: null
(我不明白為什么,所以嘗試了這個)
var test3 = sheet.getRange("A1:A10").getRichTextValues();
這將返回:
[ [ {} ],
[ {} ],
[ {} ],
[ {} ],
[ {} ],
[ {} ],
[ {} ],
[ {} ],
[ {} ],
[ {} ] ]
所以我迷路了,我真的不知道如何獲得一個/多個單元格的 URL。
在文檔中,有關於getLinkUrl
在有多個 URL 時返回null
的解釋,但我不知道如何只提取一個 URL。
我正在使用的表格非常簡單,只有 A 欄中有文字,
appli
info
motivation
anime
dev perso
reflexion
funny
sad
雖然我不確定你的實際電子表格, I'm trying to get the url of a range of cell but it always return null to me.
,我認為在您的情況下,超鏈接可能設置在單元格文本的一部分中。 那么,您可以測試以下示例腳本嗎?
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[][]
的 object。 這樣,您的問題就得到了這樣的結果。 當要取回URL時,需要從object取回。 從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() {
// Ref: https://stackoverflow.com/a/21231012/7108653
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)
}
var range = sheet.getRange("A1");
使用時,僅返回單元格“A1”的超鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.