我是Google Scripts的初学者,我正在寻找从电子表格中读取值的可能性,并在其中编写包含这些值的自动电子邮件。我试图在谷歌和论坛上找到一些信息,但我不太了解它。
例如:在我的电子表格中,C2是用户将填写的单元格(它是每平方米计算器的价格)。当C2填充例如6m2时,D2将计算价格。例如240欧元。
现在,我想为此工作表添加一个脚本,该脚本会自动生成并向我发送一封包含以下文字的电子邮件:'您希望在地板上添加“C2'地点。这将花费D2'
我知道这是可能的,但我不知道......有人可以帮帮我吗?
答案 0 :(得分:0)
通常,您可以使用以下功能,每次编辑单元格时都会自动触发:
function onEdit(e){
var range = e.range; //Get edited range
if (range.getA1Notation() == 'C2'){
var calculatedValue = range.offset(0,1); //Assumes that the calculated value is in the cell to the right of the cell where the area is entered
var body = 'You want carpeting for a '+ range.getValue() + ' location. This will cost ' + calculatedValue.getValue();
try{
GmailApp.sendEmail('email@yourdomain.com', 'new carpet request', body);
}
catch(e)
{
Logger.log(e)
}
}
}
不幸的是,编辑电子表格时触发的onEdit()触发器不允许脚本发送电子邮件。见https://developers.google.com/apps-script/guides/sheets/functions#advanced
您的下一个最佳选择是通过添加如下所示的onOpen函数将其与菜单项结合起来:
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Scripts')
.addItem('Send Email', 'sendEmail')
.addToUi();
}
调用sendEmail函数,如下所示:
function sendEmail(){
var range = SpreadsheetApp.getActiveSpreadsheet().getRange('C2');
var calculatedValue = range.offset(0,1);
var body = 'You want carpeting for a '+ range.getValue() + ' location. This will cost ' + calculatedValue.getValue();
try{
GmailApp.sendEmail('email@yourdomain.com', 'new carpet request', body);
}
catch(e)
{
Logger.log(e)
}
}
您显然还需要添加一些错误检查和漂亮的语法,以使您的电子邮件按照您喜欢的方式使用单位和所有内容,除非您打算在电子表格中执行此操作。