Google电子表格中的脚本可以从脚本控制窗口运行,但不能从表单中的触发器开始工作吗?

时间:2016-04-06 07:41:23

标签: google-apps-script

我在为Google工作表中突出显示单词而构建的这个小代码有问题 当我从脚本控制窗口启动它时,此代码工作正常,但当我尝试从工作表中的单元格触发脚本时,它不起作用。
我是这个谷歌电子表格的所有者。 这是代码:

function Surligner(nom) {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() ;
  var mois = sheet.getRange("A4").getValue().getMonth() ;
  var listeNbrJours = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) ;

  // nom = sheet.getRange("M1").getValue() ;

  sheet.getRange(4, 5, listeNbrJours[mois],9).setBorder(true, true, true, true, true, true, "black", null ) ;
  sheet.getRange(4, 5, listeNbrJours[mois],9).setFontColor("black") ;

  for (var i=4 ; i<listeNbrJours[mois]+3 ; i++)
  {
    for (var j=5 ; j<14 ; j++) 
    {
      if (sheet.getRange(i,j).getValue().match(nom) ) 
      { 
        sheet.getRange(i,j).setBorder(true, true, true, true, true, true, "red", null ) ;
        sheet.getRange(i,j).setFontColor("red") ;
      }
    }
  }
}

我使用=SURLIGNER(M1)从工作表触发脚本,其中M1是包含要突出显示的名称的单元格。
消息错误是:

  

您不能调用setBorder(第9行)

sheet

1 个答案:

答案 0 :(得分:1)

显然,您无法使用自定义功能来运行nom = sheet.getRange("M1").getValue() ; // I think you thought about it too 功能

引自 Custom Functions in Google Sheets docs

  

电子表格只读(可以使用大多数get *()方法,但不能设置*())。

这意味着从工作表调用函数不会起作用。

一种可能的解决方法是使用此

Surligner

然后使用onEdit事件触发器运行Range.getValue它(尽管由于昂贵的var new_win = gui.Window.open('https://github.com', { kiosk: true, 'chromium-args' : '--host-rules="MAP * github.com"' }); 方法可能会产生问题。