Javascript 替换函数的问题
所以我有一个谷歌表格,收集客户的注册数据。收集的数据包括学生姓名、学生选择参加的课程以及信用卡号。一旦提交,我就会收到通知。一接到通知,我就去我的谷歌工作表,向信用卡收取适当的费用 信用卡收费后,我想向客户发送一封确认电子邮件,该电子邮件基于单元格A1中的文本模板,即表单2上的(1,1),其中包括学生姓名(范围C2)、学生注册参加的课程(范围D2)和信用卡收费金额(范围E2)。简单地说,我想用我定义为变量的实际值替换“模板文本”(即{Name}、{sessions}和{Cost})中的花括号占位符 就我的一生而言,我无法让它发挥作用 以下是我尝试运行此代码时得到的错误详细信息: 类型错误:在对象中找不到函数替换。这是电子邮件正文。这是向信用卡收取的金额:{Cost} 我一直在网上关注这个问题。我看了YouTube视频。我读了大量的在线文档,但没有一个提供任何有意义的帮助。我一直在试图弄清楚记录器是如何工作的,但这对我来说仍然是个谜。非常沮丧 还有,有没有一种方法可以让我与论坛社区分享我的项目,这样有人就可以真正查看我的代码了???我希望有一个应用程序脚本的网站,可以像ExcelForum一样处理有关VBA编程的问题Javascript 替换函数的问题,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,所以我有一个谷歌表格,收集客户的注册数据。收集的数据包括学生姓名、学生选择参加的课程以及信用卡号。一旦提交,我就会收到通知。一接到通知,我就去我的谷歌工作表,向信用卡收取适当的费用 信用卡收费后,我想向客户发送一封确认电子邮件,该电子邮件基于单元格A1中的文本模板,即表单2上的(1,1),其中包括学生姓名(范围C2)、学生注册参加的课程(范围D2)和信用卡收费金额(范围E2)。简单地说,我想用我定义为变量的实际值替换“模板文本”(即{Name}、{sessions}和{Cost})中的花括号占位
function SendEmail2() {
// fetch these values as you need
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("B2").getValues();
var studentRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("C2").getValues();
var sessionRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("D2").getValues();
var chargeAmt = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("E2").getValues();
var studentName = studentRange;
var sessionName = sessionRange;
var emailAddress = emailRange;
var charge = chargeAmt;
var templateText = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(1,1).getValues();
// This is what needed to change
var emailText = templateText
.replace("{Name}", studentName)
.replace("{Sessions}", sessionName)
.replace("{Cost}", charge);
var subject = 'Junior Golf Clinic Registration Receipt';
var message = emailText;
MailApp.sendEmail(emailAddress, subject, message);
}
这是电子邮件正文
这是信用卡的费用{Cost}
//应替换为var“费用”的值。
这是学生的姓名:{name}
//应替换为与变量“studentName”关联的值]
这些是学生计划参加的课程:
{sessions}
//应该是与var“sessionName”关联的值。
此时脚本正试图对其获得的任何值进行替换,但这些值未被视为字符串,因此。替换将无法按预期工作
尝试使用如下所示的.toString(),我还清理了脚本中的一些其他变量,因为没有真正的理由定义它们然后重命名它们
function SendEmail2() {
//spreadsheet variables
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = spreadsheet.getSheetByName("Sheet1");
//fetch values from spreadsheet
var emailAddress = dataSheet.getRange("B2").getValues();
var studentName = dataSheet.getRange("C2").getValues();
var sessionName = dataSheet.getRange("D2").getValues();
var charge = dataSheet.getRange("E2").getValues();
var templateText = spreadsheet.getSheetByName("Template").getRange(1,1).getValues();
//get templateText as string and replace values with variables defined above
var emailText = templateText.toString()
.replace("{Name}", studentName)
.replace("{Sessions}", sessionName)
.replace("{Cost}", charge);
var subject = 'Junior Golf Clinic Registration Receipt';
var message = emailText;
MailApp.sendEmail(emailAddress, subject, message);
}
如您所见,我在替换开始时添加了.toString():
var emailText = templateText.toString()
目前,您的脚本正在尝试对其获得的任何值进行替换,但是这些值没有被视为字符串,因此。replace将无法按预期工作 尝试使用如下所示的.toString(),我还清理了脚本中的一些其他变量,因为没有真正的理由定义它们然后重命名它们
function SendEmail2() {
//spreadsheet variables
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = spreadsheet.getSheetByName("Sheet1");
//fetch values from spreadsheet
var emailAddress = dataSheet.getRange("B2").getValues();
var studentName = dataSheet.getRange("C2").getValues();
var sessionName = dataSheet.getRange("D2").getValues();
var charge = dataSheet.getRange("E2").getValues();
var templateText = spreadsheet.getSheetByName("Template").getRange(1,1).getValues();
//get templateText as string and replace values with variables defined above
var emailText = templateText.toString()
.replace("{Name}", studentName)
.replace("{Sessions}", sessionName)
.replace("{Cost}", charge);
var subject = 'Junior Golf Clinic Registration Receipt';
var message = emailText;
MailApp.sendEmail(emailAddress, subject, message);
}
如您所见,我在替换开始时添加了.toString():
var emailText = templateText.toString()
非常感谢你,罗斯!它工作得非常完美。更重要的是,我理解你在代码中所做的更改,因此我也学到了一些东西!太好了,很高兴我能提供帮助。如果你满意,请将此标记为你问题的答案。非常感谢你,罗斯!它工作得非常完美。更重要的是,我非常理解你在代码中所做的更改我也学到了一些东西!太好了,很高兴我能帮上忙。如果您满意,请将此标记为您问题的答案。