我有一个包含4列输入用于撰写电子邮件的Google工作表
我想(快速)为每一行创建一个按钮(全部添加,例如,列D),该按钮将使用按钮所在行的信息 only 发送电子邮件。
我该怎么做?
如何快速为每一行添加多个相同的按钮,但每个按钮只会触发使用其自身行中的信息发送电子邮件? < / p>
如何对这样的脚本函数进行编码,以便它将数据抓取的哪一行更改为&#34; current&#34;行吗
到目前为止我已尝试过:
我已使用Insert&gt;向单行添加了一个按钮。绘制并为其指定自定义函数的名称(sendEmail
)。
我的剧本:
function sendEmail() {
var sheet = SpreadsheetApp.getActiveSheet();
var email = e.values[0];
var subject = e.values[1];
var message = e.values[2];
MailApp.sendEmail(email, subject, message)
}
e.values
是访问特定列的最佳方式吗?
如何添加代码以缩小脚本以仅处理其指定按钮所在的行?
答案 0 :(得分:2)
您无法使用事件触发器,因为点击图片无法从工作表中获取任何数据。更简单的方法是使用Apps脚本定位行中的活动单元格并选择正确的范围。
function sendEmail() {
// define a couple constants for the function
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const ui = SpreadsheetApp.getUi();
// Make sure the selected row has text
if(sheet.getActiveCell().isBlank()) {
ui.alert("Please select a row with a message");
return;
}
// if valid, get the correct row of data.
var row = sheet.getActiveCell().getRow();
// get the range for that row
var rowRange = sheet.getRange(row, 1, 1, 3).getValues();
// Build the object to use in MailApp
var address = rowRange[0][0];
var subj = rowRange[0][1];
var body = rowRange[0][2];
var msg = "Address: " + address + "\nSubject: " + subj + "\nBody: " + body;
// Here for illustration only
ui.alert(msg, ui.ButtonSet.OK)
// MailApp.sendEmail(address, subj, body);
// set the send status in col 4
sheet.getRange(row, 4).setValue("Sent");
}
这样,您可以在工作表中使用单个图像运行单个函数。为每行添加图像会变得很麻烦。这是轻量级和有效的。
您希望在实际发送邮件之前考虑其他一些数据验证步骤,但这应该可以帮助您入门。
答案 1 :(得分:1)
这是获得你要求的方式。每行上的发送电子邮件按钮以及该行的附带数据。
Code.gs
<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>
myemail.html
onStart
这是对话框的样子: