2017-03-14 42 views
1

我正在开发一个项目,但遇到了一个重大的障碍,我希望有人有答案。否则,我必须采取一种长期的方式。将Char(10)从单元格值导入Google表格电子邮件

我有与含有一个回车一个简单公式的单元格:

= “良好” & CHAR(10)& “早晨”

细胞的结果如下所示:

“好

晨报”

如果我运行一个简单的电子邮件的脚本带来的单元格的值,它剔除了从细胞值CHAR(10),并返回以下代替:

“早上好”

有没有办法留住包括CHAR(10)单元格的值?

我与一个消息框尝试过了,它仍然除去焦炭(10),并给出了结果:

“早安”

VS的所期望的结果:

“好

晨报”使用

消息框&电子邮件脚本:

function ShowCellValue(){ 
var OriginalString = SpreadsheetApp.getActive().getRange("E2").getValue(); 
var NewString = OriginalString.replace(/\n/g, '\\n') 
Browser.msgBox(NewString); 
} 

function SendEmail(){ 
var subject = "Subject Goes Here"; 
var OriginalString = SpreadsheetApp.getActive().getRange("E2").getValue(); 
var NewString = OriginalString.replace(/\n/g, '<br>') 
var recipients = "[email protected]"; 

var message = "<HTML><BODY><font size=4>" 
    + "<P>" + "" 
    + "<BR>" + "Here is the value of cell E2: " 
    + "<BR>" + "" 
    + "<BR>" + "" 
    + "<BR>" + NewString 
    + "<BR>" + "" 
    + "<BR>" + "" 
    + "</HTML></BODY>"; 
MailApp.sendEmail(recipients, subject, "", {htmlBody: message}); 
} 
+1

你可以试试这个,而不是CHAR(10)。 =“好”和“\ n”和“早上”。这会在表格中给你一个丑陋的输出,但是应该给你所需的Browser.msgBox,希望你的电子邮件。 –

+0

谢谢您的评论。不幸的是,它实际上在电子邮件正文中引入了“\ n”。 –

回答

2

linebreak不会丢失。它只被Browser.msgBox方法所压制,它用空格代替它。比较以下内容:

var str = SpreadsheetApp.getActive().getRange("E2").getValue(); 
Browser.msgBox(str); // no linebreak shown 
Logger.log(str);  // linebreak shown 

记录一个字符串是一种更好的方式来查看它比将它扔到msgBox中是什么。

您应该直接测试电子邮件输出;不要认为这将是你在msgBox中看到的。

如果目标是为了显示与MSGBOX换行符文本,可以通过编码换行来完成为\\n字符串:

Browser.msgBox(str.replace(/\n/g, '\\n')); 

(这也可能是电子邮件的帮助,但我不知道有关;依赖于电子邮件格式)

对于HTML格式的电子邮件使用,

str.replace(/\n/g, '<br>') 
+0

正常, 这对消息框非常有用。非常感谢! 我试着用HMTL电子邮件使用它,但它仍然将它们全部组合在一起。你知道电子邮件脚本中是否有解决方法吗? –

+0

更新:使用日志技巧,日志显示它应该正确发送电子邮件,但事实并非如此。我尝试在这里粘贴我的电子邮件脚本,但它限制了我的角色。 –

+0

进行以下更改并尝试str.replace(/ \ n/g,'
')。基本上只是介绍一个html标签 –

相关问题