我是谷歌脚本新手...
我在谷歌工作表中有一个阅读列表,我正在尝试使用谷歌脚本从工作表中提取数据以表格格式显示。表格的大部分内容都显示正确,甚至将出版物的标题作为超链接,但超链接似乎没有发挥应有的作用,因为它们没有去任何地方......非常感谢任何建议!
<script>
/*
* THIS FUNCTION CALLS THE getData() FUNCTION IN THE Code.gs FILE,
* AND PASSES RETURNED DATA TO showData() FUNCTION
*/
google.script.run.withSuccessHandler(showData).getData();
// THIS FUNCTION GENERATES THE DATA TABLE FROM THE DATA ARRAY
function showData(dataArray){
$(document).ready(function(){
$('#data-table').DataTable({
data: dataArray,
// CHANGE THE TABLE HEADINGS BELOW TO MATCH WITH YOUR SELECTED DATA RANGE
columns: [
{
"title": "Title",
"render": function(data, type, row, meta){
if(type === 'display'){
// Assuming each row has a unique URL in the first element of the row array
data = '<a href="' + row[0] + '">' + data + '</a>';
}
return data;
}
},
{"title": "Author(s)"},
{"title": "Type"},
{"title": "Source"},
{"title": "Reason"},
]
});
});
}
</script>
我试图让表格的第一列将 URL 数据从 google 表格表拉到 google 脚本,并成为一个有效的超链接,但当我点击它时,它不会去任何地方
从您的回复中,我注意到您的
getData()
的Google Apps脚本如下。
function getData() {
var spreadSheetId = "###";
var dataRange = "Sheet1!A2:F";
var range = Sheets.Spreadsheets.Values.get(spreadSheetId, dataRange);
var values = range.values;
return values;
}
从您显示的电子表格图像中,我认为“A”列的单元格值是带有超链接的文本。在这种情况下,当使用
Sheets.Spreadsheets.Values.get
时,超链接不会包含在响应值中。我认为这就是您当前问题的原因。
为了检索文本和超链接,这里使用了RichText。
当这些点都体现在你的脚本中时,下面的修改如何?
请设置您的电子表格 ID。
function getData() {
var spreadSheetId = "###";
var sheet = SpreadsheetApp.openById(spreadSheetId).getSheetByName("Sheet1");
var range = sheet.getRange("A2:F" + sheet.getLastRow());
var values = range.getRichTextValues().map(r => r.map(c => {
var text = c.getText();
var url = c.getLinkUrl();
return url ? `<a href="${url}">${text}</a>` : text;
}));
return values;
}
<a href="${url}">${text}</a>
。这与数据表一起使用。return url ? `<a href="${url}">${text}</a>` : text;
修改为return url ? `<a href="${url}" target="_blank">${text}</a>` : text;
。<script>
/*
* THIS FUNCTION CALLS THE getData() FUNCTION IN THE Code.gs FILE,
* AND PASSES RETURNED DATA TO showData() FUNCTION
*/
google.script.run.withSuccessHandler(showData).getData();
// THIS FUNCTION GENERATES THE DATA TABLE FROM THE DATA ARRAY
function showData(dataArray){
$(document).ready(function(){
$('#data-table').DataTable({
data: dataArray,
// CHANGE THE TABLE HEADINGS BELOW TO MATCH WITH YOUR SELECTED DATA RANGE
columns: [
{"title": "Title"},
{"title": "Author(s)"},
{"title": "Type"},
{"title": "Source"},
{"title": "Reason"},
]
});
});
}
</script>