我有一個在提交谷歌表單回應時執行的應用程式腳本。應用腳本附加到回應谷歌表。
我想通過格式化回復來發送一封電子郵件,但由于谷歌表單不允許格式化答案,我必須在應用程式腳本中進行。
用戶將在多行中輸入問題的回應。我想接受該回應并為該問題創建無序串列。
例如:用戶將輸入以下回應這是一個測驗這應該是另一個串列項。另一個。
我想將其格式化為
- 這是一個測驗
- 這應該是另一個串列項。
- 另一個。
為此,我必須從谷歌表格單元格中獲取回應并用新行 (\n) 拆分。由于某種原因,我無法這樣做。
function onFormSubmit(e) {
var values = e.namedValues;
var htmlBody = '';
for (Key in values) {
Logger.log(Key ' : ' values[Key]);
try {
Logger.log(JSON.stringify(values[Key]));
} catch(error) {
Logger.log(error);
}
htmlBody = createSection(Key, values[Key]);
GmailApp.sendEmail('[email protected]', 'sending email', '', {htmlBody:htmlBody});
}
function createSection(sectionName, values) {
Logger.log(sectionName ' : ' values ' Length: ' values.length);
var linesHtml = createBulletList(values);
var sectionHtml = '<h1>' sectionName '</h1>' '<p><br></p>';
sectionHtml = '<ul>' linesHtml '</ul>' '<p><br></p>';
return sectionHtml;
}
function createBulletList(values) {
var listHtml = '';
Logger.log('createBulletList ' values ' Length: ' values.length);
//listHtml = values.forEach(listItem);
listHtml = listItem(values);
Logger.log(listHtml);
return listHtml;
}
我試過 split 但由于某種原因它不適用于 values[Key] 物件。我已經嘗試 JSON.stringify 來展平物件,但 split('\n') 仍然無法在字串上作業。
任何幫助將不勝感激。
uj5u.com熱心網友回復:
使用顯式變數并使用它而不是 values[Key] 解決了這個問題
var cellValue = values[Key].toString();
uj5u.com熱心網友回復:
我認為這就是你想要做的:
function createBulletList(multiLineText) {
return (multiLineText "")
.split("\n")
.map(line => "<li>" line "</li>")
.join("\n");
}
筆記:
- "" 部分將值轉換為文本,以防它是數字或日期。
- split 創建一個文本陣列
- map 創建另一個 html <li> 陣列
- join 將它們放回多行文本中(如果你不想要,可以是 join(""))
uj5u.com熱心網友回復:
發送無序串列
function onMySubmit(e) {
//Logger.log(JSON.stringify(e));
let itemA = e.values.map((v,i) => {if(i > 0) {return v}}).filter(e => e);
let hl = "<ul>" itemA.map(itm => `<li>${itm}</li>`).join("") "</ul>";
//Logger.log(hl);
GmailApp.sendEmail("recipient email","list",null,{htmlBody:hl});
}
使用來自 onFormSubmit 事件物件的值。

使用簡答題
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/463297.html
