我创建了一个标题,该标题的单元格在将“ xx”添加到单元格时会更改颜色。在评估学生时,我不想输入每个单元格,而是希望通过单击该单元格将xx添加到该单元格中。那是我开始四处搜寻并开始研究脚本的时候。我向每个单元格添加了2张图纸,因此我可以单击一个图像添加“ xx”,然后单击另一幅图像删除“ xx”(如果我更改了其评估等级)。我今天与他们一起玩耍,并在第一个单元中找到了成功,但是我尝试为其分配脚本的每个其他单元都说找不到该脚本。 当我从脚本文件中“运行”脚本时,该脚本会显示在我的工作表上,但是当我单击所需的单元格时就不会显示。
这是我的代码第一部分的一部分(我有15行具有不同的标题-口头交流,权限等):
[
function verbalcommunication4() {
ss=SpreadsheetApp.getActiveSpreadsheet()
s=ss.getActiveSheet()
var currVal=s.getRange("D5").getValue()
var plusVal= currVal +" xx"
s.getRange("D5") .setValue(plusVal)
}
function verbalcommunication4clear() {
ss=SpreadsheetApp.getActiveSpreadsheet()
s=ss.getActiveSheet()
var currVal=s.getRange("D5").getValue()
var text =s.getRange("D5").getValue().replace(" xx","");
s.getRange("D5").setValue(text);
}
function verbalcommunication3() {
ss=SpreadsheetApp.getActiveSpreadsheet()
s=ss.getActiveSheet()
var currVal=s.getRange("E5").getValue()
var plusVal= currVal +" xx"
s.getRange("E5") .setValue(plusVal)
}
function verbalcommunication3clear() {
ss=SpreadsheetApp.getActiveSpreadsheet()
s=ss.getActiveSheet()
var currVal=s.getRange("E5").getValue()
var text =s.getRange("E5").getValue().replace(" xx","");
s.getRange("E5").setValue(text);
}
function verbalcommunication2() {
ss=SpreadsheetApp.getActiveSpreadsheet()
s=ss.getActiveSheet()
var currVal=s.getRange("F5").getValue()
var plusVal= currVal +" xx"
s.getRange("F5") .setValue(plusVal)
}
function verbalcommunication2clear() {
ss=SpreadsheetApp.getActiveSpreadsheet()
s=ss.getActiveSheet()
var currVal=s.getRange("F5").getValue()
var text =s.getRange("F5").getValue().replace(" xx","");
s.getRange("F5").setValue(text);
}
function verbalcommunication1() {
ss=SpreadsheetApp.getActiveSpreadsheet()
s=ss.getActiveSheet()
var currVal=s.getRange("G5").getValue()
var plusVal= currVal +" xx"
s.getRange("G5") .setValue(plusVal)
}
function verbalcommunication1clear() {
ss=SpreadsheetApp.getActiveSpreadsheet()
s=ss.getActiveSheet()
var currVal=s.getRange("G5").getValue()
var text =s.getRange("G5").getValue().replace(" xx","");
s.getRange("G5").setValue(text);
}
口头交流4和口头交流4很好。我尝试附加到其他单元格中的图形的所有其他脚本都没有错误附加,但是当我单击对象以运行脚本时,出现错误消息“找不到脚本功能'脚本名称'”。 就像我说的那样,当我从脚本项目页面运行脚本时,会出现所需的结果(在适当的单元格中为xx),而不是在单击所需的单元格图形时不会显示。
我对此并不陌生,因此不胜感激。 谢谢!
答案 0 :(得分:0)
您的代码正在使用全局变量而不是局部变量,并且在所有可能包含它们的代码行上均未使用句子终止符(分号)。
虽然不是强制性地以其他方式进行操作,但这可能会导致一些意外结果,尤其是在我们不太确定Google Apps脚本和JavaScript的工作方式时。
注意:为了便于阅读,在每个变量赋值运算符(例如=
)之前和之后添加空格。
替换每个
ss=SpreadsheetApp.getActiveSpreadsheet()
作者
var ss = SpreadsheetApp.getActiveSpreadsheet();
以此类推。
此外,删除空格并在其上添加结束分号
s.getRange("E5") .setValue(plusVal)
结果语句应如下所示:
s.getRange("E5").setValue(plusVal);
对其他类似的语句执行相同的操作。
参考
答案 1 :(得分:0)
您将必须设置条件格式,并且此脚本将所有按钮都放在侧栏上,因为它更容易实现。您可以使用样式来获得想要的东西。
我使用了函数vc和函数vcc以及一些较小的中间函数,这样我就不必全部写出来。但是除了通过var的局部变量外,它们基本上与您具有的功能相同。
function vc(a1) {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet()
var cv=sh.getRange(a1).getValue();
var pv= cv +" xx";
sh.getRange(a1).setValue(pv);
SpreadsheetApp.flush();
}
function vcc(a1) {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh=ss.getActiveSheet();
var cv=sh.getRange(a1).getValue();
var txt =sh.getRange(a1).getValue().replace(" xx","");
sh.getRange(a1).setValue(txt);
SpreadsheetApp.flush();
}
function vcD5(){
vc('D5');
}
function vccD5(){
vcc('D5');
}
function vcE5(){
vc('E5');
}
function vccE5(){
vcc('E5');
}
function vcF5(){
vc('F5');
}
function vccF5(){
vcc('F5');
}
function vcG5(){
vc('G5');
}
function vccG5(){
vcc('G5');
}
此功能将使用所有按钮创建侧边栏。
function createSideBar(){
var vA=['D5','E5','F5','G5']
var vB=['green','yellow','red','blue']
var s='<style>input[type="button"]{padding:2px;margin:2px;width:100px;height:35px;}</style>';
for(var i=0;i<4;i++){
s+=Utilities.formatString('<div style="border:2px solid %s;"><br /><input type="button" value="%s" onClick="google.script.run.vc%s();" />',vB[i],vA[i],vA[i]);
s+=Utilities.formatString('<input type="button" value="%sc" onClick="google.script.run.vcc%s();" /></div>',vA[i],vA[i]);
}
s+='<br /><input type="button" value="Close" onClick="google.script.host.close()" />';
var userInterface=HtmlService.createHtmlOutput(s);
SpreadsheetApp.getUi().showSidebar(userInterface);
}