阅读电子表格,通过电子邮件发送价值

时间:2014-10-30 06:36:09

标签: web-applications google-apps-script google-sheets

我是Google Scripts的初学者,我正在寻找从电子表格中读取值的可能性,并在其中编写包含这些值的自动电子邮件。我试图在谷歌和论坛上找到一些信息,但我不太了解它。

例如:在我的电子表格中,C2是用户将填写的单元格(它是每平方米计算器的价格)。当C2填充例如6m2时,D2将计算价格。例如240欧元。

现在,我想为此工作表添加一个脚本,该脚本会自动生成并向我发送一封包含以下文字的电子邮件:'您希望在地板上添加“C2'地点。这将花费D2'

我知道这是可能的,但我不知道......有人可以帮帮我吗?

1 个答案:

答案 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)
  }
}

您显然还需要添加一些错误检查和漂亮的语法,以使您的电子邮件按照您喜欢的方式使用单位和所有内容,除非您打算在电子表格中执行此操作。