Google apps script Google脚本-for in-loop语句返回未定义的值

Google apps script Google脚本-for in-loop语句返回未定义的值,google-apps-script,google-sheets,Google Apps Script,Google Sheets,这是对我上一篇文章的重新发布。我真的试图修复代码,但失败了!!我想在这篇文章上寻求一些帮助,请 function submit(e){ var app = UiApp.getActiveApplication(); var sheet = SpreadsheetApp.openById(submissioSSKey).getActiveSheet(); var ss = SpreadsheetApp.getActiveSpreadsheet(); var projectname

这是对我上一篇文章的重新发布。我真的试图修复代码,但失败了!!我想在这篇文章上寻求一些帮助,请

function submit(e){
  var app = UiApp.getActiveApplication();
  var sheet = SpreadsheetApp.openById(submissioSSKey).getActiveSheet();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var projectname = e.parameter.projectname;
  var projectid = e.parameter.projectid;
  var projectmanager = e.parameter.projectmanager;
  var salesrep = e.parameter.salesrep;
  var duedate = e.parameter.duedate;
  var projectphase = e.parameter.projectphase;
  var disctype = e.parameter.disctype;
  var mediatype = e.parameter.mediatype;
  var encryptiontype = e.parameter.encryptiontype;
  var password = e.parameter.password;
  var quantity = e.parameter.quantity;
  var specialinstructions = e.parameter.specialinstructions;
  var update = "Colombo Save"; 

  //var sheet = ss.getSheets()[0];
  var uiData = [[
    projectname,
    projectid,
    projectmanager,
    salesrep,
    duedate,
    projectphase,
    disctype,
    mediatype,
    encryptiontype,
    password,
    quantity,
    specialinstructions,
    update
  ]];
  sheet.getRange(sheet.getLastRow()+1, 1, uiData.length, uiData[0].length)
  .setValues(uiData);

  var app = UiApp.getActiveApplication();
  var result = {};
  var numMembers = parseInt(e.parameter.table_tag);
  result.members = [];

    for(var i=1; i<=numMembers; i++){
      var member = {};
      member.firstName = e.parameter['fName'+i];
      member.lastName = e.parameter['lName'+i];
      member.company = e.parameter['company'+i];
      member.address = e.parameter['address'+i];
      result.members.push(member);
     }

var htmlBody = 'Shipping Information: <br>'
  for(var a in result.members) {
    var member = result.members[a];
    var fname = member.firstName;
    var lname = member.lastName;
    var company = member.company;
    var address = member.address;    

  var timestamp = Utilities.formatDate(new Date(), "America/New_York", "MMMM dd, yyyy hh:mm:ss"); // Timestamp
  var activeSessionuser = Session.getActiveUser();//Session.getEffectiveUser(); Get the current user in the spreadsheet
  var emailAddress = 'test@email.com'; //Venue Colombo Team
  var subject = "**Test Email** DVD Request Submitted - **Test Email**"+ projectname +" - "+projectid+" - "+ projectmanager;
  /^var emailBody =*/
  var emailBody = 
  "<br><font color=\"Blue\"><b><h2>Request Submitted</h2></b></font>"
  +"<br/>Hi Venue Colombo Team,<br/>"
  +"<br/>The following data room(s) will need a disc creation. Please begin bulk save data room and create ISO to upload to the FTP site:<br/>"
  +"<br/><b>Project Name:</b> " + projectname
  +"<br/><b>Project ID:</b> " + projectid
  +"<br/><b>Project Manager:</b> " + projectmanager
  +"<br/><b>Sales:</b> " + salesrep
  +"<br/>" + htmlBody + 'Client Name: '+ fname + ' ' + lname +'<br>'+ 'Company Name: '+ company +'<br>' + 'Address: ' + address +'<br>'+'<br>'+
  +"<br/>"
  +"<br/><b>Phase:</b> " + projectphase
  +"<br/><b>Disc Type:</b> " + disctype
  +"<br/>"
  +"<br/><b>Encryption:</b> " + encryptiontype
  +"<br/><b>Password:</b> " + password
  +"<br/><b>Quantity:</b> " + quantity
  +"<br/>"
  +"<br/><b>Client Due Date:</b> " + duedate
  +"<br/>"
  +"<br/><font color=\"Red\"><b>Special Instructions:</b></font> " + "<br/>"+ specialinstructions

  +"<i><br/>&nbsp;<br/>This request was submitted by:</i> "
  +"<br/><font color=\"blue\">Name:</font> " + activeSessionuser
  +"<br/>Time Stamp: "  + timestamp
  +"<br/>"
  +"&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;"
  + //Line divider code &#8212;
   "<br/>Venue Client Services"
  +"<br/>United States: "
  +"<br/>UK/International: "
  +"<br/>France: "
  +"<br/>Asia: ";

    htmlBody += 'Client Name: '+ fname + ' ' + lname +'<br>'+ 'Company Name: '+ company +'<br>' + 'Address: ' + address +'<br>'+'<br>';
  }
  var optAdvancedArgs = {name: "Venue Client Services", htmlBody: emailBody};
  //MailApp.sendEmail('fake@email.com', subject, '', optAdvancedArgs);
  Logger.log(htmlBody);
  Logger.log(emailBody);
  var html = app.createHTML('First Name: '+ fname + ' ' + lname +'<br>'+ 'Company Name: '+ company +'<br>' + 'Client Address: ' + address);
  app.add(html);
  //dvdForm();
return app;
 }
这段代码需要一些帮助。我能够使用工作代码中的代码生成我想要的结果,但是当我在另一张表(主代码)上实现此代码时,它不起作用。挠头想弄明白这件事

这是共享的谷歌电子表格,有两个完整的代码。转到脚本编辑器。

任何帮助都将不胜感激。提前谢谢你

编辑#3提交非工作代码部分

function submit(e){
  var app = UiApp.getActiveApplication();
  var sheet = SpreadsheetApp.openById(submissioSSKey).getActiveSheet();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var projectname = e.parameter.projectname;
  var projectid = e.parameter.projectid;
  var projectmanager = e.parameter.projectmanager;
  var salesrep = e.parameter.salesrep;
  var duedate = e.parameter.duedate;
  var projectphase = e.parameter.projectphase;
  var disctype = e.parameter.disctype;
  var mediatype = e.parameter.mediatype;
  var encryptiontype = e.parameter.encryptiontype;
  var password = e.parameter.password;
  var quantity = e.parameter.quantity;
  var specialinstructions = e.parameter.specialinstructions;
  var update = "Colombo Save"; 

  //var sheet = ss.getSheets()[0];
  var uiData = [[
    projectname,
    projectid,
    projectmanager,
    salesrep,
    duedate,
    projectphase,
    disctype,
    mediatype,
    encryptiontype,
    password,
    quantity,
    specialinstructions,
    update
  ]];
  sheet.getRange(sheet.getLastRow()+1, 1, uiData.length, uiData[0].length)
  .setValues(uiData);

  var app = UiApp.getActiveApplication();
  var result = {};
  var numMembers = parseInt(e.parameter.table_tag);
  result.members = [];

    for(var i=1; i<=numMembers; i++){
      var member = {};
      member.firstName = e.parameter['fName'+i];
      member.lastName = e.parameter['lName'+i];
      member.company = e.parameter['company'+i];
      member.address = e.parameter['address'+i];
      result.members.push(member);
     }

var htmlBody = 'Shipping Information: <br>'
  for(var a in result.members) {
    var member = result.members[a];
    var fname = member.firstName;
    var lname = member.lastName;
    var company = member.company;
    var address = member.address;    

  var timestamp = Utilities.formatDate(new Date(), "America/New_York", "MMMM dd, yyyy hh:mm:ss"); // Timestamp
  var activeSessionuser = Session.getActiveUser();//Session.getEffectiveUser(); Get the current user in the spreadsheet
  var emailAddress = 'test@email.com'; //Venue Colombo Team
  var subject = "**Test Email** DVD Request Submitted - **Test Email**"+ projectname +" - "+projectid+" - "+ projectmanager;
  /^var emailBody =*/
  var emailBody = 
  "<br><font color=\"Blue\"><b><h2>Request Submitted</h2></b></font>"
  +"<br/>Hi Venue Colombo Team,<br/>"
  +"<br/>The following data room(s) will need a disc creation. Please begin bulk save data room and create ISO to upload to the FTP site:<br/>"
  +"<br/><b>Project Name:</b> " + projectname
  +"<br/><b>Project ID:</b> " + projectid
  +"<br/><b>Project Manager:</b> " + projectmanager
  +"<br/><b>Sales:</b> " + salesrep
  +"<br/>" + htmlBody + 'Client Name: '+ fname + ' ' + lname +'<br>'+ 'Company Name: '+ company +'<br>' + 'Address: ' + address +'<br>'+'<br>'+
  +"<br/>"
  +"<br/><b>Phase:</b> " + projectphase
  +"<br/><b>Disc Type:</b> " + disctype
  +"<br/>"
  +"<br/><b>Encryption:</b> " + encryptiontype
  +"<br/><b>Password:</b> " + password
  +"<br/><b>Quantity:</b> " + quantity
  +"<br/>"
  +"<br/><b>Client Due Date:</b> " + duedate
  +"<br/>"
  +"<br/><font color=\"Red\"><b>Special Instructions:</b></font> " + "<br/>"+ specialinstructions

  +"<i><br/>&nbsp;<br/>This request was submitted by:</i> "
  +"<br/><font color=\"blue\">Name:</font> " + activeSessionuser
  +"<br/>Time Stamp: "  + timestamp
  +"<br/>"
  +"&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;"
  + //Line divider code &#8212;
   "<br/>Venue Client Services"
  +"<br/>United States: "
  +"<br/>UK/International: "
  +"<br/>France: "
  +"<br/>Asia: ";

    htmlBody += 'Client Name: '+ fname + ' ' + lname +'<br>'+ 'Company Name: '+ company +'<br>' + 'Address: ' + address +'<br>'+'<br>';
  }
  var optAdvancedArgs = {name: "Venue Client Services", htmlBody: emailBody};
  //MailApp.sendEmail('fake@email.com', subject, '', optAdvancedArgs);
  Logger.log(htmlBody);
  Logger.log(emailBody);
  var html = app.createHTML('First Name: '+ fname + ' ' + lname +'<br>'+ 'Company Name: '+ company +'<br>' + 'Client Address: ' + address);
  app.add(html);
  //dvdForm();
return app;
 }

我终于能够找出“for循环语句返回未定义值”的问题所在


我没有向包含表单字段的面板添加
.addCallbackElement

这是前面的示例posthttp://stackoverflow.com/questions/23670782/google-script-for-loop-statement-return-undefined-valuesok. 标记的副本‌​-返回未定义的值。请阅读论坛指南。