我在为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行)
答案 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"'
});
方法可能会产生问题。