Javascript Google应用程序脚本搜索UI工具与以前的功能错误
上一个函数正在运行,但当我要单击上一个以查看它的最后一次搜索时。我收到一个错误“无法调用方法”到未定义的字符串。 请帮我输入代码。在上一个函数中,我对下面突出显示的代码进行了反复试验。请帮忙,谢谢Javascript Google应用程序脚本搜索UI工具与以前的功能错误,javascript,google-apps-script,Javascript,Google Apps Script,上一个函数正在运行,但当我要单击上一个以查看它的最后一次搜索时。我收到一个错误“无法调用方法”到未定义的字符串。 请帮我输入代码。在上一个函数中,我对下面突出显示的代码进行了反复试验。请帮忙,谢谢 function click(eventInfo){ var ss = SpreadsheetApp.openById('1qpx2qZvBriBZ3jkOfHjMpsRbL9w04JZEJMeor11OJC81').getSheetByName("Teaching"); var app = Ui
function click(eventInfo){
var ss = SpreadsheetApp.openById('1qpx2qZvBriBZ3jkOfHjMpsRbL9w04JZEJMeor11OJC81').getSheetByName("Teaching");
var app = UiApp.getActiveApplication();
var row=ss.getActiveRange().getRowIndex();
var lastrow = ss.getLastRow();
app.getElementById("txbid").setEnabled(true).setText("Search");
var item = eventInfo.parameter.itemname;
var next = app.getElementById("nextid").setEnabled(false);
var pre = app.getElementById("previd").setEnabled(false);
var lbl = app.getElementById("lblid").setText("No match");
var f1 = eventInfo.parameter.thirdname;
var f2 = eventInfo.parameter.fourthname;
var f3 = eventInfo.parameter.fifthname;
var f4 = eventInfo.parameter.emailname;
var f1box = app.getElementById("thirdid");
var f2box = app.getElementById("fourthid");
var f3box = app.getElementById("fifthid");
var f4box = app.getElementById("emailid");
var hidden = app.getElementById("hidden");
var data = ss.getRange(2,1,lastrow,6).getValues();// get the 3 columns of data
for(nn=0;nn<data.length;++nn){ ;// iterate trough
if(data[nn].toString().toLowerCase().match(item.toString())==item.toString()&&item!='') {;// if a match is found in one of the 3 fields, break the loop and show results
f1box.setText(data[nn][2]);
f2box.setText(data[nn][3]);
f3box.setText(data[nn][4]);
f4box.setText(data[nn][5]);
app.getElementById("nextid").setEnabled(true).setText("Next");
app.getElementById("txbid").setEnabled(true).setText("Search");
ss.getRange(nn+2,2).activate();
lbl.setText("found from"+data[nn][0]+"-"+data[nn][1]+", click Next").setEnabled(true);
hidden.setValue(nn.toString())
break;}}
return app;
}
function next(eventInfo){
var ss = SpreadsheetApp.openById('1qpx2qZvBriBZ3jkOfHjMpsRbL9w04JZEJMeor11OJC81').getSheetByName("Teaching");
var app = UiApp.getActiveApplication();
var row=ss.getActiveRange().getRowIndex();
var lastrow = ss.getLastRow();
app.getElementById("txbid").setEnabled(true).setText("Search");
var item = eventInfo.parameter.itemname;
var next = app.getElementById("nextid").setText("No match").setEnabled(false);
var pre = app.getElementById("previd").setEnabled(true);
var lbl = app.getElementById("lblid").setText("0 results to display");
var f1 = eventInfo.parameter.thirdname;
var f2 = eventInfo.parameter.fourthname;
var f3 = eventInfo.parameter.fifthname;
var f4 = eventInfo.parameter.emailname;
var f1box = app.getElementById("thirdid").setText("");
var f2box = app.getElementById("fourthid").setText("");
var f3box = app.getElementById("fifthid").setText("");
var f4box = app.getElementById("emailid").setText("");
var start = Number(eventInfo.parameter.hidden)+1;
var hidden = app.getElementById("hidden");
var data = ss.getRange(2,1,lastrow,6).getValues();// get the 3 columns of data
for(nn=start;nn<data.length;++nn){ ;// iterate trough
if(data[nn].toString().toLowerCase().match(item.toString())==item.toString()&&item!='') {;// if a match is found in one of the 3 fields, break the loop and show results
f1box.setText(data[nn][2]);
f2box.setText(data[nn][3]);
f3box.setText(data[nn][4]);
f4box.setText(data[nn][5]);
app.getElementById("previd").setEnabled(true).setText("Previous");
app.getElementById("nextid").setEnabled(true).setText("Next");
app.getElementById("txbid").setEnabled(true).setText("Search");
ss.getRange(nn+2,2).activate();
lbl.setText("found from"+data[nn][0]+"-"+data[nn][1]+", click Next").setEnabled(true);
hidden.setValue(nn.toString())
break;}}
return app;
}
function previous(eventInfo){
var ss = SpreadsheetApp.openById('1qpx2qZvBriBZ3jkOfHjMpsRbL9w04JZEJMeor11OJC81').getSheetByName("Teaching");
var app = UiApp.getActiveApplication();
var row=ss.getActiveRange().getRowIndex();
var lastrow = ss.getLastRow();
app.getElementById("txbid").setEnabled(true).setText("Search");
var item = eventInfo.parameter.itemname;
var next = app.getElementById("nextid").setEnabled(true);
var pre = app.getElementById("previd").setText("No match").setEnabled(false);
var lbl = app.getElementById("lblid").setText("No match");
var f1 = eventInfo.parameter.thirdname;
var f2 = eventInfo.parameter.fourthname;
var f3 = eventInfo.parameter.fifthname;
var f4 = eventInfo.parameter.emailname;
var f1box = app.getElementById("thirdid").setText("");
var f2box = app.getElementById("fourthid").setText("");
var f3box = app.getElementById("fifthid").setText("");
var f4box = app.getElementById("emailid").setText("");
返回应用程序;
}您正在使用索引nn迭代数据数组,但由于数组的构建方式,该数组的最后一项为空。 当您使用
var data = ss.getRange(2,1,lastrow,6).getValues();// get the 3 columns of data
从第2行开始,获取长度的lastRow值,这意味着数据包含最后一行下方的空行(lastRow返回填充数据范围的总高度)
尝试使用var data=ss.getRange(2,1,lastrow-1,6)
应该可以解决这个问题
注意:这是我几年前最初编写的(修改过的)代码,不确定我在原始脚本中犯了那个错误;-) 您正在使用索引nn迭代数据数组,但由于数组的构建方式,该数组的最后一项为空。 当您使用
var data = ss.getRange(2,1,lastrow,6).getValues();// get the 3 columns of data
从第2行开始,获取长度的lastRow值,这意味着数据包含最后一行下方的空行(lastRow返回填充数据范围的总高度)
尝试使用var data=ss.getRange(2,1,lastrow-1,6)
应该可以解决这个问题
注意:这是我几年前最初编写的(修改过的)代码,不确定我在原始脚本中犯了那个错误;-) 我仍然收到错误,无法调用未定义的方法toSting。我还应该编辑其他代码吗?当它将是上一个按钮的最后一个结果时,我应该得到“不匹配”。。请帮助我获取您以前函数的副本?或者您可以将其粘贴到此处,以便我可以查看我的错误。这是一个很大的帮助(请检查我上面突出显示的代码…谢谢Serge.var start=Number(eventInfo.parameter.hidden)-1;或(nn=start;nnI找不到正确版本的原始脚本,但如果需要,您可以共享电子表格的副本(只读且无私人数据)并在这里显示链接。这是我的示例电子表格=我的脚本链接=(它也在电子表格中。)谢谢你的帮助和时间。我能收到你的电子邮件吗?这样我就可以很容易地与你联系这个问题了?谢谢@Serge InAsim仍然收到错误无法调用未定义的方法toSting。我应该编辑其他代码吗?我应该得到“不匹配”当它将是上一个按钮的最后一个结果时..请帮助感谢我可以得到你上一个函数的副本吗?或者你可以将它粘贴到这里,这样我就可以看到我的错误了。这是一个很大的帮助..:(请检查我上面突出显示的代码…谢谢Serge先生.var start=Number(eventInfo.parameter.hidden)-1;或者(nn=start;nnI找不到正确版本的原始脚本,但如果需要,您可以共享电子表格的副本(只读且无私人数据),并在此处显示链接。这是我的示例电子表格=我的脚本链接=(它也在电子表格中。)谢谢你的帮助和时间。我能收到你的电子邮件吗?这样我就可以很容易地与你联系这个问题了?谢谢@Serge insas
var data = ss.getRange(2,1,lastrow,6).getValues();// get the 3 columns of data