Google sheets 如何通过电子邮件发送谷歌工作表中的一行

Google sheets 如何通过电子邮件发送谷歌工作表中的一行,google-sheets,Google Sheets,第一个帖子。我刚刚开始学习编码(2天内),但这是我的头了 我希望能够通过右键单击突出显示整行的灰色单元格,然后在下拉菜单中选择一个选项,该选项允许我输入电子邮件地址或发送到代码中输入的特定地址(我将始终发送到同一地址),从而通过电子邮件发送一行内容(该行中的所有单元格) 事实上,选择下拉菜单中的选项并不是必要的,只是我设想的那样,但任何允许我绕过复制行并将其粘贴到电子邮件中的解决方案都会奏效 任何帮助都将不胜感激 干杯好吧,我知道这可能是很糟糕的编码,但正如我所说,直到几天前,我甚至从未读过代码

第一个帖子。我刚刚开始学习编码(2天内),但这是我的头了

我希望能够通过右键单击突出显示整行的灰色单元格,然后在下拉菜单中选择一个选项,该选项允许我输入电子邮件地址或发送到代码中输入的特定地址(我将始终发送到同一地址),从而通过电子邮件发送一行内容(该行中的所有单元格)

事实上,选择下拉菜单中的选项并不是必要的,只是我设想的那样,但任何允许我绕过复制行并将其粘贴到电子邮件中的解决方案都会奏效

任何帮助都将不胜感激


干杯

好吧,我知道这可能是很糟糕的编码,但正如我所说,直到几天前,我甚至从未读过代码,更不用说尝试写任何东西了。所以请友善点

因此,通过一些认真的谷歌搜索、复制/粘贴、编辑以满足我的需要等,并利用我所知的很少的资源,我得出了以下结论:

function onEdit(event){
//transfer a row once specific value entered into a cell within that row (without deleting original row)
  // assumes source data in sheet named Needed
  // target sheet of move to named Acquired
  // test column with yes/no is col 4 or D
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Sheet1" && r.getColumn() == 5 && r.getValue() == "Email JM") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Sheet2");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).copyTo(target);
  }
};

function onEditEmail(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
  var startRow = 1;  // First row of data to process
  var numRows = 1;   // Number of rows to process
  // Fetch the range of cells
  var dataRange = sheet.getRange(startRow, 1, numRows, 5)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i]; 
    var message = row[0] + ", " + row[1] + ", " + row[2] + ", " + row[3]; //whole row
      var subject = "New Order";
    if (row[0] != ""){
      MailApp.sendEmail("example@email.com", subject, message);

    //delete row straight after it is sent    
    sheet.deleteRows(1, 1);
  }

    }
  }
函数onEdit(事件){
//将特定值输入行内的单元格后,传输该行(不删除原始行)
//假定工作表中的源数据名为“需要”
//已获取移动到命名的目标工作表
//带是/否的测试柱为第4列或第D列
var ss=SpreadsheetApp.getActiveSpreadsheet();
var s=event.source.getActiveSheet();
var r=event.source.getActiveRange();
如果(s.getName()==“Sheet1”和&r.getColumn()==5和&r.getValue()==“Email JM”){
var row=r.getRow();
var numColumns=s.getLastColumn();
var targetSheet=ss.getSheetByName(“Sheet2”);
var target=targetSheet.getRange(targetSheet.getLastRow()+1,1);
s、 getRange(行,1,1,numColumns).copyTo(目标);
}
};
函数onEditEmail(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
var startRow=1;//要处理的第一行数据
var numRows=1;//要处理的行数
//获取单元格的范围
var dataRange=sheet.getRange(startRow,1,numRows,5)
//获取范围中每行的值。
var data=dataRange.getValues();
对于(变量i=0;i
当我在行的末尾输入“Email JM”时,需要通过电子邮件发送的行被转移到另一个空白的工作表中,通过为此列设置数据验证,可以通过单击下拉箭头(无需键入)来完成。我的onEditEmail触发器设置为每分钟一次,它从“Sheet2”发送我需要的所有列,然后立即删除该行,这样一分钟后就不会重新发送该行

唯一的问题是如果在一分钟内输入了两个订单,但发生这种情况的可能性很小(尽管我猜迟早会发生)

请指出我可以改进的地方


干杯

嗨,欢迎来到StackOverflow。你能给我们看一下你的代码,让我们了解你到目前为止做了什么吗?嗨,伙计。我到目前为止什么都没有。我只学习了一些基本知识,比如如何声明变量、函数的基本知识、语法以及计算机在给出指令时的思维方式。我不知道该去哪里启动atm。为欢迎而干杯,并回答我关于Web应用程序的评论James。不要在其他网站上重新发布。我认为Web应用程序网站与此网站完全不同。如果不是,那就糟糕了。为Web应用程序的建议干杯。我以前做过那个教程,但至于让代码做我需要的事情,我不知道。我已经在网上搜索了很多关于这个特别的问题OK,tough love!干杯,伙计,我会努力的,然后会有一个不错的开始(甚至可能是整个代码;)