2014-05-07 258 views
1

我期待在我的应用程序中创建一个UI表单部分,它将动态添加删除UiApp表单元素。我试图使用应用脚本中的示例教程hereGoogle Apps脚本 - 动态添加删除UiApp表单元素

就执行添加删除元素而言,此示例效果很好,但当使用提交按钮捕获值时,它会以JSON.stringify格式提交。当我只想捕获将被添加到HTML电子邮件的文本或字符串格式的值。

如果有办法将JSON.stringify转换为文本,字符串或仅以格式获取值,我将继续使用此示例。

如果不是,我想知道下列Javascript HTML代码是否可以转换成GAS代码,并且能够捕获HTML电子邮件模板中每个条目的值以便在MailApp中使用。

http://jsfiddle.net/g59K7/

任何建议,实例或调整码,将不胜感激。

预先感谢您

+0

我不明白。您是否使用UiApp?在UiApp上没有客户端代码给你'stringify'什么的。另外,如果您想使用HTML代码,请使用[HtmlService](https://developers.google.com/apps-script/guides/html/)而不是UiApp。 –

回答

1

如果你不想要的结果是在一个JSON对象,那么你就可以调整_processSubmittedData(E)的功能。现在他已经把所有东西都写入了一个Object,这很好。所有你需要做的是有办法解析它:

function _processSubmittedData(e){ 
    var result = {}; 
    result.groupName = e.parameter.groupName; 
    var numMembers = parseInt(e.parameter.table_tag); 
    result.members = []; 
    //Member info array 
    for(var i=1; i<=numMembers; i++){ 
     var member = {}; 
     member.firstName = e.parameter['fName'+i]; 
     member.lastName = e.parameter['lName'+i]; 
     member.dateOfBirth = e.parameter['dob'+i]; 
     member.note = e.parameter['note'+i]; 
     result.members.push(member); 
    } 

    var htmlBody = 'Group Name: ' + result.groupName; 
    for(var a in result.members) { 
    var member = result.members[a]; 
    var date = member.dateOfBirth; 
    var last = member.lastName; 
    var first = member.firstName; 
    var note = member.note; 

    htmlBody += first + ' ' + last + ' was born on ' + date + ' and has this note: ' + note; 
    } 

    MailApp.sendEmail('[email protected]',"Test Subject Line", "", {htmlBody: htmlBody}); 
    } 
+0

你好斯坦,非常感谢你的帮助。当我将调整后的代码添加到主表单代码时,我遇到了一个问题。我收到未定义的值。我有两个代码的测试电子表格。在脚本编辑器中,您将看到工作代码和未工作代码 - 未定义地址。可以看到我做错了什么,或者如果我把代码放在错误的地方。 [链接] https://docs.google.com/spreadsheets/d/1adXbsUp2T0DroWhern1oU4oaKszO37X7spBKiImYC8Y/edit#gid=1138046975 – WallyG