我有一个包含15列和3个标题行的Google电子表格。还有数百行包含数据,并且不断添加新行。
我正在努力使列C和H的单元格值自动转换为包含链接中单元格值的超链接,并将单元格的值作为超链接文本。
例:
列C,第300行包含值v74k39ch
;它应该成为:=HYPERLINK("http://www.example.com/v74k39ch","v74k39ch")
执行上述操作的Google Apps脚本应在手动输入数据或复制/粘贴到C或H列时执行。它还应该与数据集一起使用(例如复制/粘贴来自单个列的多行数据)在另一张纸上,用表格中的C或H列在表格上)。请注意,用于列C的URL与用于列H的URL不同。
以下是我开始使用的内容并且无效:
function onEdit(event) {
var rng = event.source.getActiveRange();
var val = rng.getValues();
var col = rng.getColumn();
if(col == 3) {
for(var i = 0; i < val.length; i++) {
rng.setValues('=HYPERLINK("http://www.example.com/'+val+'","'+val+'")');
}
}
if(col == 8) {
for(var i = 0; i < val.length; i++) {
rng.setValues('=HYPERLINK("http://www.website.com/'+val+'","'+val+'")');
}
}
}
我做错了什么?我试图了解有关JavaScript基础知识的更多信息,但我不是一个经验丰富的程序员,编写这个脚本证明是一个令人困惑的任务。非常感谢任何指导。
答案 0 :(得分:2)
你做得很好。
你缺少的是这个;
这是代码;
function onEdit(event) {
var sheet = event.source.getActiveSheet();
var rng = sheet.getActiveRange();
var val = rng.getValues();
var col = rng.getColumn();
var row = rng.getRow();
var h_string = '=HYPERLINK("http://www.example.com/'+val+'","'+val+'")';
if(col == 3 || col == 8) {
((col == 3)? col = "C" : col = "H");
cell = sheet.getRange(col+row);
cell.setFormula(h_string);
}
}
答案 1 :(得分:0)
我不确定你在这里要做什么,但我可能会让你更近一点。
首先,我注意到你正在使用setValues()。这需要设置回矩形网格(二维数组)。您正在设置一个字符串值,该值应该适用于setValue(),但不适用于setValues()。
接下来,因为您正在使用公式,所以使用setFormulas()而不是setValues()可能会有更好的结果。
希望有所帮助。