我試圖創建一個腳本,它從Google文檔中的電子表格中讀取值(名稱,日期等)並自定義特定表單的描述(文本內容)用這些值發送給用戶。但是string.replace()方法不像我預期的那樣工作。它沒有任何東西取代關鍵。我錯過了什麼嗎?我花了數小時搜索沒有答案。任何幫助將不勝感激。Google文檔應用程序腳本:表單內容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});
}
非常感謝!這工作完美。 – zeqof