Google apps script 换行符-Gmail应用程序脚本
我已经编写了一些代码来自动处理电子表格中的电子邮件,并希望将其扩展到我的团队中,但我希望在其中添加页脚/签名,并且不必在代码中包含收件人和主题,而是从电子表格中提取。我已在电子表格中列出如下内容: 我希望电子邮件页脚看起来像这样,但当我运行脚本时,它会返回“范围”Google apps script 换行符-Gmail应用程序脚本,google-apps-script,google-sheets,google-email-settings-api,Google Apps Script,Google Sheets,Google Email Settings Api,我已经编写了一些代码来自动处理电子表格中的电子邮件,并希望将其扩展到我的团队中,但我希望在其中添加页脚/签名,并且不必在代码中包含收件人和主题,而是从电子表格中提取。我已在电子表格中列出如下内容: 我希望电子邮件页脚看起来像这样,但当我运行脚本时,它会返回“范围” 函数EODReportEmail(){ var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“EOD电子邮件任务”);//使用活动工作表中的数据 var st
函数EODReportEmail(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“EOD电子邮件任务”);//使用活动工作表中的数据
var startRow=2;//要处理的第一行数据
var numRows=sheet.getLastRow();//要处理的行数
var lastColumn=sheet.getLastColumn();//最后一列
var dataRange=sheet.getRange(startRow,1,numRows,lastColumn)//获取活动工作表的数据范围
var data=dataRange.getValues();//获取范围中每一行的值
var recipient=“shea.a。murphy@icloud.com“//电子邮件地址报告将发送到
var subject=“Shea Murphy-EOD电子邮件”//电子邮件的主题标题,例如Shea Murphy-EOD电子邮件
var footer=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“EOD电子邮件信息”).getRange(“C2”);
Logger.log(页脚);
//完成电子表格中的每一行
对于(变量i=0;i
基本上,是否有任何方法可以将代码带到收件人、主题的两个页面上,并在末尾包含签名和所有正确的格式,而不是在代码中逐行写出
我相信你的目标如下
- 您希望使用Google Apps脚本将单元格“C2”中的富文本转换为HTML数据
- 关于
,此问题的原因是由于当我运行脚本时,它返回“范围”
var footer=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“EOD电子邮件信息”).getRange(“C2”)的脚本代码>。
- 在这种情况下,将检索范围对象。这样,
被放在电子邮件的页脚Range
- 在这种情况下,将检索范围对象。这样,
- 为了使用从单元格中检索到的富文本作为电子邮件HTML正文的页脚,需要将富文本转换为HTML
var range=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“EOD电子邮件信息”).getRange(“C2”);
var footer=range.getRichTextValue().getRuns().reduce((s,r)=>{
让text=r.getText().replace(//\n/g,“
”).replace(//g,”);
如果(r.getLinkUrl())text=`
了解更多信息-请联系
我相信您的目标如下
- 您希望使用Google Apps脚本将单元格“C2”中的富文本转换为HTML数据
- 关于
,此问题的原因是由于当我运行脚本时,它会返回“范围”
的脚本。var footer=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“EOD电子邮件信息”).getRange(“C2”);
- 在这种情况下,将检索range对象。这样,
将放在电子邮件的页脚range
function EODReportEmail() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("EOD Email Tasks");; // Use data from the active sheet var startRow = 2; // First row of data to process var numRows = sheet.getLastRow(); // Number of rows to process var lastColumn = sheet.getLastColumn(); // Last column var dataRange = sheet.getRange(startRow, 1, numRows, lastColumn) // Fetch the data range of the active sheet var data = dataRange.getValues(); // Fetch values for each row in the range var recipient = "shea.a.murphy@icloud.com" // Email address report will be sent to var subject = "Shea Murphy - EOD Email" // Subject heading of email e.g. Shea Murphy - EOD Email var footer = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("EOD Email Information").getRange("C2"); Logger.log(footer); // Work through each row in the spreadsheet for (var i = 0; i < data.length; ++i) { var row = data[i]; // Assign each column a variable var Point1 = row[0]; // Col A: 1st point to be included in email var Point2 = row[1]; // Col B: 2nd point to be included in email var Point3 = row[2]; // Col C: 3rd point to be included in email var Point4 = row[3]; // Col D: 4th point to be included in email var Point5 = row[4]; // Col E: 5th point to be included in email var Num1 = "<b>1. </b>" // Number variables for email points var Num2 = "<b>2. </b>" var Num3 = "<b>3. </b>" var Num4 = "<b>4. </b>" var Num5 = "<b>5. </b>" var Task1 = Num1 + Point1 // Note 1 to be inlcuded in the email var Task2 = Num2 + Point2 // Note 2 to be inlcuded in the email var Task3 = Num3 + Point3 // Note 3 to be inlcuded in the email var Task4 = Num4 + Point4 // Note 4 to be inlcuded in the email var Task5 = Num5 + Point5 // Note 5 to be inlcuded in the email if (Point1 == undefined) {Task1 = " "}; if (Point2 == undefined) {Task2 = " "}; if (Point3 == undefined) {Task3 = " "}; if (Point4 == undefined) {Task4 = " "}; if (Point5 == undefined) {Task5 = " "}; // Build the email message var emailBody = '<b style="font-family:georgia;font-size:18px;font-style:italic; color: #D04A02";>EOD Report</b>'; emailBody += '<p>Please see what I have worked on today below:<p>'; emailBody += '<dl><dd>'+ Task1 +'</dd>'; emailBody += '<dl><dd>'+ Task2 +'</dd>'; emailBody += '<dl><dd>'+ Task3 +'</dd>'; emailBody += '<dl><dd>'+ Task4 +'</dd>'; emailBody += '<dl><dd>'+ Task5 +'</dd>'; emailBody += '<p>Let me know if you have any questions.<p>'; emailBody += footer // Create the email draft GmailApp.sendEmail( recipient, // Recipients subject, // Subject ' ', // Body { htmlBody: emailBody, // Options: Body (HTML) } ) } }
var footer = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("EOD Email Information").getRange("C2");
var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("EOD Email Information").getRange("C2"); var footer = range.getRichTextValue().getRuns().reduce((s, r) => { let text = r.getText().replace(/\n/g, "<br>").replace(/ /g, " "); if (r.getLinkUrl()) text = `<a href="${r.getLinkUrl()}">${text}<\/a>`; const style = r.getTextStyle(); const obj = { fontFamily: style.getFontFamily(), fontSize: style.getFontSize(), foregroundColor: style.getForegroundColor(), bold: style.isBold(), italic: style.isItalic(), strikethrough: style.isStrikethrough(), underline: style.isUnderline(), }; const fontFamily = obj.fontFamily ? `font-family: '${obj.fontFamily}';` : ""; const fontSize = obj.fontSize ? `font-size: ${obj.fontSize * 1.333}px;` : ""; const foregroundColor = obj.foregroundColor ? `color: ${obj.foregroundColor};` : ""; const bold = obj.bold ? 'font-weight: bold;' : ""; const italic = obj.italic ? 'font-style: italic;' : ""; const strikethrough = obj.strikethrough ? 'text-decoration: line-through;' : ""; const underline = obj.underline ? 'text-decoration: underline;' : ""; const keys = [fontFamily, fontSize, foregroundColor, bold, italic, strikethrough, underline]; if (keys.some(e => e != "")) { s += `${keys.reduce((str, e) => str += e, '<span style="')}">${text}</span>`; } else { s += text; } return s; }, "");
- 在这种情况下,将检索range对象。这样,