Google apps script Google Docs应用程序脚本:表单内容字符串.replace()方法不起作用

Google apps script Google Docs应用程序脚本:表单内容字符串.replace()方法不起作用,google-apps-script,Google Apps Script,我试图创建一个脚本,从GoogleDocs中的电子表格中读取值(名称、日期等),并自定义要发送给用户的特定表单描述(文本内容)。但是string.replace()方法并不像我期望的那样工作。它只是将密钥替换为零。我错过什么了吗?我花了几个小时在谷歌上搜索,没有找到答案。任何帮助都将不胜感激 var docId = ScriptProperties.getProperty("QuestionnaireDocId"); var sheet = SpreadsheetApp.getActiveS

我试图创建一个脚本,从GoogleDocs中的电子表格中读取值(名称、日期等),并自定义要发送给用户的特定表单描述(文本内容)。但是string.replace()方法并不像我期望的那样工作。它只是将密钥替换为零。我错过什么了吗?我花了几个小时在谷歌上搜索,没有找到答案。任何帮助都将不胜感激

var docId = ScriptProperties.getProperty("QuestionnaireDocId"); 

var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;  // First row of data to process
var numRows = 1000000;   // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, 5)
// Fetch values for each row in the Range.
var data = dataRange.getValues();

for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var name = row[0]; // this var isn't empty. - tested it to check

    var formSpreadsheet  = SpreadsheetApp.openById(docId);
    var sFormUrl = formSpreadsheet.getFormUrl();
    if(sFormUrl) {
        var response = UrlFetchApp.fetch(sFormUrl);
        var sFormContent = response.getContentText();

        //Replace <keyName> in the form description with the value of var 'name'
        sFormContent = sFormContent.replace("<keyName>", name); 


        //get only body content
        sFormContent = sFormContent.replace(/[\s\S]+<body[^>]*>([\s\S]+)<\/body>[\s\S]+/i, '$1');

        //remove script
        sFormContent = sFormContent.replace(/<script[^>]*>[\s\S]*<\/script>/i, '');
        //add inline style for form elements, since gmail does not allow style tag and      link tag to style it
        sFormContent = sFormContent.replace(/class\=\"errorbox-good\"/gi, 'class="errorbox-good" style="margin-bottom:1.5em;zoom:1"');
        sFormContent = sFormContent.replace(/class\=\"ss-q-title\"/gi, 'class="ss-q-title" style="display:block;font-weight:bold;"');
        sFormContent = sFormContent.replace(/class\=\"ss-q-help\"/gi, 'class="ss-q-help" style="display:block;color:#666;margin:.1em 0 .25em 0"');
        sFormContent = sFormContent.replace(/class\=\"ss-choices\"/gi, 'class="ss-choices" style="list-style:none;margin:.5em 0 0 0;padding:0;"');
    }
    var mailBody2;

    if(sFormUrl) {
        mailBody2 = '<br /><br />If you have trouble viewing or submitting this form, you can fill it out online:<br />';
        mailBody2 += '<a href="' + sFormUrl + '" title="">' + sFormUrl + '</a>';
        mailBody2 += '</body></html>';
        mailBody2 += '<br /><br />';
        mailBody2 += sFormContent;
        mailBody2 += '<br />';
    }       


    // Embed form and send the email - the emails work fine

    var subject = "Test email";

    MailApp.sendEmail(email_address, subject, mailBody2, {htmlBody: mailBody2}); 

}
var docId=ScriptProperties.getProperty(“QuestionnaireDocId”);
var sheet=SpreadsheetApp.getActiveSheet();
var startRow=2;//要处理的第一行数据
var numRows=1000000;//要处理的行数
//获取单元格A2:B3的范围
var dataRange=sheet.getRange(startRow,1,numRows,5)
//获取范围中每行的值。
var data=dataRange.getValues();
对于(变量i=0;i([\s\s]+)[\s\s]+/i,$1');
//删除脚本
sFormContent=sFormContent.replace(/]*>[\s\s]*/i',);
//为表单元素添加内联样式,因为gmail不允许使用样式标记和链接标记来设置样式
sFormContent=sFormContent.replace(/class\=“errorbox good\”/gi,'class=“errorbox good”style=“边距底部:1.5em;缩放:1“);
sFormContent=sFormContent.replace(/class\=“ss-q-title\”/gi,'class=“ss-q-title”style=“display:block;font-weight:bold;”);
sFormContent=sFormContent.replace(/class\=“ss-q-help\”/gi,'class=“ss-q-help”style=“display:block;color:#666;margin:.1em 0.25em 0”);
sFormContent=sFormContent.replace(/class\=“ss choices\”/gi,'class=“ss choices”style=“list style:none;margin:.5em 0;padding:0;”);
}
var-mailBody2;
如果(sFormUrl){
mailBody2='

如果您在查看或提交此表单时遇到问题,可以在线填写:
; mailBody2+=''; mailBody2+=''; mailBody2+='

'; mailBody2+=sFormContent; mailBody2+='
'; } //嵌入表单并发送电子邮件-电子邮件工作正常 var subject=“测试电子邮件”; 发送电子邮件(电子邮件地址,主题,邮箱2,{htmlBody:mailBody2}); }
看起来有几件事情导致它无法按编写的方式工作。首先,在从UrlFetchApp调用返回的表单内容中,有两个地方显示了表单描述。一个看起来像这样。我只是把foo放在表单的description字段中:

<meta itemprop="description" content="foo &lt;keyName&gt;">
一旦我做了这些更改,我就能够让它工作了,我收到的电子邮件在描述中包含了我的电子表格中的值,在单词“foo”之后

<div class="ss-form-desc ss-no-ignore-whitespace">foo </div>
sFormContent = sFormContent.replace("<keyName>", name); 
sFormContent = sFormContent.replace(/\[keyName\]/g, name);