Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hyperlink Google电子表格:如何将特定列的单元格值转换为包含单元格的超链接';s值多少?_Hyperlink_Google Apps Script_Google Sheets - Fatal编程技术网

Hyperlink Google电子表格:如何将特定列的单元格值转换为包含单元格的超链接';s值多少?

Hyperlink Google电子表格:如何将特定列的单元格值转换为包含单元格的超链接';s值多少?,hyperlink,google-apps-script,google-sheets,Hyperlink,Google Apps Script,Google Sheets,我有一个谷歌电子表格,有15列和3行标题。还有数百行包含数据,并且不断添加新行 我试图使C列和H列的单元格值自动转换为超链接,其中包含链接中的单元格值,以及作为超链接文本的单元格值 例: 第300行C列包含值v74k39ch;它应该变成:=HYPERLINK(“http://www.example.com/v74k39ch“,“v74k39ch”) 执行上述操作的Google Apps脚本应在手动输入数据或复制/粘贴到C列或H列时执行。它还应处理数据集(例如,使用脚本将多行数据从另一张工作表的一

我有一个谷歌电子表格,有15列和3行标题。还有数百行包含数据,并且不断添加新行

我试图使C列和H列的单元格值自动转换为超链接,其中包含链接中的单元格值,以及作为超链接文本的单元格值

例: 第300行C列包含值
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+'")');
    }
  }
}
函数onEdit(事件){
var rng=event.source.getActiveRange();
var val=rng.getValues();
var col=rng.getColumn();
如果(col==3){
对于(var i=0;i

我做错了什么?我试图学习更多关于JavaScript基础知识的知识,但我不是一个经验丰富的程序员,编写这个脚本被证明是一项令人困惑的任务。非常感谢您的指导。

我不太确定您在这里想做什么,但我可能可以让您更接近

首先,我注意到您正在使用setValues()。这需要设置一个矩形栅格(二维阵列)。您正在设置一个字符串值,该值应适用于setValue(),但不适用于setValues()

接下来,由于您使用的是公式,因此使用setFormulas()而不是setValues()可能会获得更好的结果


希望能有帮助。

你做得很好

你缺少的是这个

  • for循环正在向范围val.length添加相同的字符串 时代
  • 使用set.Values()注意复数“s”需要一个数组,您有 设置一个字符串。用[]包围它可能会起作用
  • 如果在下面的代码中使用setValue(),它将起作用,但您应该这样做 如JKWA所述,使用setFormula()
这是代码

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);
  }
}