开发者问题收集

函数 google script 和 javascript 中未捕获的错误

2020-05-24
138

我有这个 html 应用程序,它会查找某个 ID 号,然后填充用户表单中的字段。单击“更新数据”按钮后,我希望它会更新 Google 表格中的特定行值,但我总是得到 Uncaught at updateProfile (fcn:81) 。 “(fcn:81)”最终为 var newDataRow = ws.getRange(myPnum + 1, 1, 1, ws.getLastColumn())。setValues(...

这是我的 javascript 代码:

document.getElementById("updatebtn").addEventListener("click", updateAppProfile);

//----------------------  UPDATE PROFILE  ---------------------------------//   
   function updateAppProfile(){

     var upProfile = document.getElementById("profileNum").value;

     if(upProfile.length === 6){
        var myNewData = {};

        myNewData.profnum = document.getElementById("profileNum").value;
        myNewData.firstName = document.getElementById("fname").value;
        myNewData.middleName = document.getElementById("mname").value;
        myNewData.lastName = document.getElementById("lname").value;
        myNewData.appsex = document.getElementById("sex").value;
        myNewData.civStat = document.getElementById("cstatus").value;
        myNewData.citizen = document.getElementById("citizenship").value;
        myNewData.birthdate = document.getElementById("bdate").value;


    //  console.log(myNewData);
    //  alert("OK");
        google.script.run.updateMyProfile(upProfile,myNewData);

     } 
     else{
     alert("invalid Profile Number");
     }   
   }

    </script>

这是我的 google app 脚本函数:

function updateMyProfile(upProfile,myNewData){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ws = ss.getSheetByName("Results");

  var data = ws.getRange(1, 1, ws.getLastRow(), 1).getValues();
  var dJoin = data.join().split(",");
  var myPnum = dJoin.indexOf(upProfile);

  if (myPnum > -1){
    var newDataRow = ws.getRange(myPnum + 1, 1, 1, ws.getLastColumn()).setValues([[myNewData.profnum,
                 myNewData.firstName,
                 myNewData.middleName,
                 myNewData.lastName,
                 myNewData.appsex,
                 myNewData.civStat,
                 myNewData.citizen,
                 myNewData.birthdate
                 ]]);
  } else {
    Logger.log("unknown data")
  }

}

我不知道该怎么做,因为当我在 google 脚本端测试数据时,只有它有效。但是当我使用整个程序时,它最终会出现该错误。我希望有人能帮忙。提前谢谢您。我将非常感谢您的回答。谢谢。

1个回答

尝试将您的函数包装在 try catch 块中,以便调试并找到精确的错误。

  • [Try / Catch][1]

除此之外:

var newDataRow = = ws.getRange(myPnum + 1, 1, 1, ws.getLastColumn()) 并不像实际使用您放入行中的数组中的值那样灵活。因此,最好使用以下语法:

var outputRowArray = [ myNewData.firstName, myNewData.middleName, "etc…" ] 然后使用其长度来确定范围,如下所示:

var newDataRow = ws.getRange( myPnum + 1, 1, 1, outputRowArray.length )

并且您目前在 setValues() 内部有一个数组,但由于您只添加 1 行,因此应使用 1 个数组,即 1 行 = 1 个数组。

Neven Subotic
2020-05-24