如何在邮件中发送带换行的数组?Google Apps Script技术咨询
问题
我用Google Apps Script编写了emailTest函数,从Google Sheets的'NCAA Weekly'工作表中获取数据生成ncaaWeekly数组,通过GmailApp发送邮件时,数组内容在邮件中以逗号分隔的连续文本显示(如:FLA vs UTAH (UTAH -7.5),NEB vs MINN (MINN -7.0)...),期望实现每个数组元素单独占一行的格式,请问该如何修改代码实现此需求?
当前代码:
function emailTest(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('NCAA Weekly'); var ncaaAway = sheet.getRange(19,19,14,1).getValues(); var ncaaHome = sheet.getRange(19,21,14,1).getValues(); var ncaaOdds = sheet.getRange(19,26,14,1).getValues(); ncaaWeekly = []; for (var i = 0; i < 14; i++){ var ncaa = ncaaAway[i] + ' vs ' + ncaaHome[i] + ` (` + ncaaOdds[i] + `)`; ncaaWeekly.push([ncaa]); } console.log(ncaaWeekly) var subject = 'testing'; var body = ncaaWeekly; GmailApp.sendEmail(----,subject,body); }
解决方案
问题根源有两个:
- 你将每个元素用数组包裹后push进
ncaaWeekly,导致最终是二维数组,转字符串时会多一层逗号分隔; - 直接把数组赋值给
body,默认会用逗号拼接所有元素。
修改步骤:
- 取消元素的数组包裹:将
ncaaWeekly.push([ncaa])改为ncaaWeekly.push(ncaa); - 用换行符拼接数组元素:将
var body = ncaaWeekly改为var body = ncaaWeekly.join('\n'); - 补充:
getValues()返回的是二维数组,之前直接用ncaaAway[i]会取到数组,建议加上[0]明确获取单元格文本值,避免潜在问题。
修改后的完整代码:
function emailTest(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('NCAA Weekly'); var ncaaAway = sheet.getRange(19,19,14,1).getValues(); var ncaaHome = sheet.getRange(19,21,14,1).getValues(); var ncaaOdds = sheet.getRange(19,26,14,1).getValues(); ncaaWeekly = []; for (var i = 0; i < 14; i++){ // 明确获取单元格文本值 var ncaa = ncaaAway[i][0] + ' vs ' + ncaaHome[i][0] + ` (` + ncaaOdds[i][0] + `)`; ncaaWeekly.push(ncaa); // 直接存储字符串,无需数组包裹 } console.log(ncaaWeekly) var subject = 'testing'; var body = ncaaWeekly.join('\n'); // 用换行符拼接数组元素 GmailApp.sendEmail(----,subject,body); }
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

