这是一种获得你所要求的方法。每行的发送电子邮件按钮以及来自该行的随附数据。
Code.gs
function getEmails()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getDataRange();
var vA=rg.getValues();
var br='<br />';
var s='<table border="1">';
s+=Utilities.formatString('<tr><td>%s</td><td>%s</td><td>%s</td><td> </td></tr>', vA[0][0],vA[0][1],vA[0][2]);
for(var i=1;i<vA.length;i++)
{
s+='<tr><td>' + vA[i][0] + '</td><td>' + vA[i][1] + '</td><td>' + vA[i][2] + '</td><td>';
s0=Utilities.formatString('\'%s\',\'%s\',\'%s\'', vA[i][0], vA[i][1], vA[i][2])
s+='<input type="button" value="Email Row ' + Number(i + 1) + '" onClick="sendMyEmail(' + s0 + ');" /></td></tr>';
}
s+='</table>';
return s;
}
function showMy1Dialog()
{
var ui=HtmlService.createHtmlOutputFromFile('myemail');
SpreadsheetApp.getUi().showModelessDialog(ui, 'Title')
}
function sendEmail(email,subj,body)
{
SpreadsheetApp.getActive().toast(email + ', ' + subj + ', ' + body);
MailApp.sendEmail(email,subj,body);
Logger.log('\'%s\',\'%s\',\'%s\'',email,subj,body);
}
myemail。HTML
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function() {
google.script.run.withSuccessHandler(displayEmails).getEmails();
});//gets data from spreadsheet on document ready
function displayEmails(hl)
{
document.getElementById('mydiv').innerHTML=hl;
}
function sendMyEmail(email,subj,body)
{
google.script.run.sendEmail(email,subj,body);
}
console.log('My Code');
</script>
</head>
<body>
<div id="mydiv">
</div>
<input type="button" value="Close" onclick="google.script.host.close();" />
</body>
</html>
这里的对话框是什么样子:
所以将这个只是发送的所有电子邮件一次(即不会只是你的单一功能运行每次都行)? – theforestecologist
这会针对您的问题发送单个选定行的电子邮件。不过,您可以重写循环以发送多个选定行的单个消息。 – Brian
好极了!这就是我想要的。谢谢! :) – theforestecologist