google-apps-script - 从单个 Google 表格单元格中提取多个超链接,并将它们各自的 URL 附加到单元格中
问题描述
我有一个谷歌表,每个单元格都包含多个超链接。
我的目标是:
- 从说单元格A1(或活动单元格/范围)中提取url
- 保留现有单元格内容并将提取的 URL 附加到现有内容(在同一单元格中)
- 能够为一个范围而不是单独的每个单元格执行此操作
目前,我有这个代码适用于一个只有一个超链接的单元格,但会出现错误
TypeError:无法读取未定义的属性“0”
当一个单元格包含多个超链接时。
function URL() {
var spreadsheet =SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var id = spreadsheet.getId();
var range = sheet.getActiveRange();
var linkArray = Sheets.Spreadsheets.get(id, {ranges: sheet.getName() + "!" +
range.getA1Notation(), fields: "sheets/data/rowData/values/hyperlink"});
var link = linkArray.sheets[0].data[0].rowData[0].values[0].hyperlink;
var cellInE = sheet.getRange(range.getRow(), 5);
var cellEcontent = sheet.getRange(range.getRow(), 5).getValues()
var appnded = cellEcontent + String.fromCharCode(10) + link;
cellInE.setValue(appnded);
}
我是谷歌应用程序脚本和一般编码的新手。任何帮助,将不胜感激。
解决方案
您需要正确迭代linkArray,我找到了一个示例并进行了一些简短的修改。它对我有用。
function myFunction() {
var spreadsheetId = "1olBuawXzIxriAhWM2_e42LzjWM2fh_1aWitZkJMErWk";
let rangeToSet = SpreadsheetApp.openById(spreadsheetId).getSheetByName("Sheet1");
var res = Sheets.Spreadsheets.get(spreadsheetId, { ranges: "Sheet1!A1:C3", fields: "sheets/data/rowData/values/hyperlink" });
var sheets = res.sheets;
for (var i = 0; i < sheets.length; i++) {
var data = sheets[i].data;
for (var j = 0; j < data.length; j++) {
var rowData = data[j].rowData;
for (var k = 0; k < rowData.length; k++) {
var values = rowData[k].values;
for (var l = 0; l < values.length; l++) {
Logger.log(values[l].hyperlink) // You can see the URL here.
// k is Row number
//l is column number
rangeToSet.getRange(k + 1, l + 1).setValue(values[l].hyperlink);
}
}
}
}
}
前:
现在:
推荐阅读
- reactjs - 将项目添加到数据库后更新 Redux 状态
- amazon-web-services - 新的 AWS EC2 EBS gp3 卷速度很慢
- css - 除了... 3dots 之外,CSS 的 line-clamp 属性可以添加文本/内容吗?CSS
- javascript - 如何使用 onkeyup 输入突出显示 ChartJS 中的条形图
- embedded-linux - 为 beaglebone black board 构建 yocto 后核心图像丢失
- javascript - 新的 Angular 应用程序:ng new 还是 dotnet new angular?
- visual-studio - 如何从 Windows 转储文件中获取进程名称?
- c# - 如何定义聚合的 ICollection
其中 T 是层次结构中当前声明类的类型? - c# - 如何将 C# 代码行保存到字符串中?
- mysql - MaxScale MaxGUI tarball 安装 MaxGUI 错误