谷歌应用程序脚本无法在类中转换未定义的



hi我不是很喜欢js,但试着运行这个脚本:

function doGet(e){
var op = e.parameter.action;
var 
ss=SpreadsheetApp.openByUrl("xxxxx");
var sheet = ss.getSheetByName("Catalogati 2018");

if(op=="insert")
return insert_value(e,sheet);
//Make sure you are sending proper parameters 
if(op=="read")
return read_value(e,sheet);
if(op=="update")
return update_value(e,sheet);
if(op=="delete")
return delete_value(e,sheet);

}
function getLastNonEmptyCellInRow(oggetto,ss) {
var sh = ss.getSheetByName("Catalogati 2018");
var rowToCheck = oggetto;
var maxColumns = sh.getLastRow();
var row = sh.getRange(rowToCheck, 1, 1, maxColumns).getValues();
row = row[0]; //Get inner array of two dimensional array
var rowLength = row.length;
for (var i = 0; i < rowLength; i++) {
var thisCellContents = row[i];
Logger.log('thisCellContents: ' + thisCellContents);
if (thisCellContents === "") {
Logger.log(i);
return i + 1;  //Pass the count plus one, which is the last column with data
}
}
}
//Recieve parameter and pass it to function to handle


function insert_value(request,sheet){
console.log(request);
var id = request.parameter.id;
var persona = request.parameter.name;
var oggetto= request.parameter.oggetto;
var flag=1;
var lr= sheet.getLastRow();
var lc= sheet.getLastColumn();
console.log(id+persona+oggetto);
for(var i=1;i<=lr;i++){
var id1 = sheet.getRange(i, 2).getValue();
if(id1==id){
flag=0;
var result="Id already exist..";
} }
//add new row with recieved parameter from client
if(flag==1){
var nInv = oggetto+persona;
var d = new Date();
var currentTime = 3443//d.toLocaleString();
var rowData = [[persona,nInv]];
var range = sheet.getRange(oggetto+7,getLastNonEmptyCellInRow(oggetto,sheet)+1,1,2);
range.setValues(rowData); 
var result="Insertion successful";
}
result = JSON.stringify({
"result": result
});  
return ContentService
.createTextOutput(request.parameter.callback + "(" + result + ")")
.setMimeType(ContentService.MimeType.JAVASCRIPT);   
}

broswer控制台返回错误:"不可能转换(class(中的undefined。(第30行("这是30号线:

var rowData = sheet.getRange(rowToCheck, 1, 1, maxColumns).getValues();

错误可能出现在获取和发布中,但我不确定。这是html:中的脚本

function insert_value() {
$("#re").css("visibility","hidden");
document.getElementById("loader").style.visibility = "visible";
$('#mySpinner').addClass('spinner');
var id1=    $("#id").val();
var name= $("#persona").val();
var oggetto = $("#oggetto").val();
var url = script_url+"?callback=ctrlq&name="+name+"&id="+id1+"&oggetto="+oggetto+"&action=insert";

var request = jQuery.ajax({
crossDomain: true,
url: url ,
method: "GET",
dataType: "jsonp"
});
}

错误在哪里?(很抱歉,如果这个问题可能会导致愚蠢,但我仍在学习(

html通过post方法传递的变量oggeto来自以下内容:

<select name "oggetto">
<option value = " 1">1234</option>
<option value = " 2">4321</option>
<option value = " 3">121341</option>
</select>

p.s.使用控制台,我发现我传递的变量(如"oggetto"(到达时未定义。但我不明白为什么,因为action和id使用相同的方法发送到脚本。

也许这会有所帮助:

function getLastNonEmptyCellInRow(row,ss) {
var ss=ss || SpreadsheetApp.getActive();//Easier to debug
var row=row || 2;//Easier to debug
var sh=ss.getSheetByName("Sheet1");//Change to your sheet
var data=sh.getRange(row,1,1,sh.getLastColumn()).getValues();//you used getLastRow() that doesnt make any sense
var rv=null;//return value if you don't find another
var hl=Utilities.formatString('<br />Row: %s<br /><table>',row);
for (var i=0;i<data[0].length; i++) {
if(!data[0][i]){
hl+=Utilities.formatString('<tr><td>data[0][%s]=%s %s</td></tr>',i,data[0][i],'empty')
}else{
hl+=Utilities.formatString('<tr><td>data[0][%s]=%s %s</td></tr>',i,data[0][i], 'filled')
rv = i + 1;
}
}
var v=sh.getRange(row,rv).getValue();
hl+=Utilities.formatString('</table><br /> Return Value: %s row: %s Column: %s', v, row, rv);
var ui=HtmlService.createHtmlOutput(hl);
SpreadsheetApp.getUi().showModelessDialog(ui, 'title');//Provide data to you in a dialog. Easier to debug for me.
return v;   
}

您可能希望删除对话框的所有行。我只是觉得用这种方式调试东西更容易。

最新更新