从单元格中的超链接运行脚本

时间:2012-10-22 04:07:43

标签: google-apps-script google-sheets

我无法通过点击谷歌电子表格中单元格中带超链接的值来查找运行脚本的文档。可能吗? 感谢

4 个答案:

答案 0 :(得分:2)

我知道这是一个老线程,但我有同样的问题,并提出了一个解决方法,所以我认为它可能会帮助其他人。

正如Mogsdad所说,你可以插入一个按钮并将你的脚本链接到它。如果您想要单击单元格中的超链接,可以使按钮与单元格或文本的大小相同,并使填充和线条颜色透明。它有助于获得一些颜色,将按钮放在适当的位置,然后编辑它以删除颜色。

对于用户来说,看起来该功能在单击文本时会运行,但实际上它是一个不可见的按钮。它不是超链接,但我相信它实现了点击“文本”来启动脚本的目标。

答案 1 :(得分:1)

如果您正在考虑这个问题,则无法通过网址直接运行Google Apps脚本功能。

  • 您可以将脚本实现为webapp,并使用doPost()方法修改电子表格。超链接需要包含一个参数,指示您在电子表格中的位置,因为webapp没有来自电子表格的上下文信息。

  • 您可以插入按钮的图片,并将脚本链接到该按钮。如果此脚本与容器绑定到电子表格,则可以访问上下文信息,例如.activeCell()确定用户所在的位置。

  • 您可以添加一个调用嵌入式脚本的自定义菜单功能。

答案 2 :(得分:1)

我成功实现的解决方案是将onEdit与目标单元格的数据验证结合使用。不完全点击超链接,但它可以解决问题:

数据验证会在该单元格中插入一个下拉列表,用户可以从中选择要运行的相应脚本,或者可以通过onEdit获取所选的单元格值并作为参数传递。

例如,如果我有一张名为" sheetToWatch"列#34; columnWithDataValidations"并且该列在每一行都有数据验证,因此它是空白或“运行脚本”,您可以控制运行脚本:

function onEdit(e) {
  var aSheet = SpreadsheetApp.getActiveSheet();
  var aCell = aSheet.getActiveCell();
  var aColumn = aCell.getColumn();
  var aRow = aCell.getRow();

  if (aSheet == "sheetToWatch" && aColumn == "columnWithDataValidations" && aCell.getValue() == 'RUN SCRIPT') {
    runTheScript()
  } else {
    //do nothing
  }

  return
}

答案 3 :(得分:0)

如果您想要的只是运行脚本的工作表上的双面文字,但又不想每次都绘制按钮,或者您希望双面文字可跨许多行进行复制,则可以使用复选框。然后,您可以处理onEdit并将单元格的值设置回false。或在脚本运行时将其设置为true,然后返回false。