第一篇文章。我刚刚开始学习编码(2天),但现在这已经超出了我的想法。
我希望能够通过右键单击突出显示整行的灰色单元格,然后在下拉菜单中选择一个允许我输入的选项来通过电子邮件发送行内容(该行中的所有单元格)电子邮件地址或发送到输入代码的特定地址(我将始终发送到同一地址)。
事实上,选择下拉菜单中的选项并不是必需的,只是我设想的方式,但任何允许我绕过复制行并将其粘贴到电子邮件中的解决方案都可以使用。
非常感谢任何帮助。
干杯
答案 0 :(得分:0)
好的,所以我知道这可能是可怕的编码,但正如我所说,直到几天前我才读过代码,更不用说尝试写任何东西了。所以请你好!
所以通过一些严肃的谷歌搜索,复制/粘贴,编辑我的需求等,并使用我知道的很少,这是我提出的:
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);
}
}
}
当我输入&#34;电子邮件JM&#34; 需要通过电子邮件发送的行转移到另一个空白表单在行的末尾,通过设置此列的数据验证,可以通过单击下拉箭头(无需键入)来完成。我的onEditEmail触发器设置为每分钟,它从&#34; Sheet2)发送我需要的所有列,然后立即删除该行,以便在一分钟后不再发送。
唯一的问题是如果在一分钟内输入2个订单,但发生这种情况的可能性非常小(虽然我想它迟早会发生)。
请指出我可以改进的地方。
干杯