让我首先说,这是我第一次使用google脚本。
我有一个工作表函数,我通过搜索找到了一个函数,经过一点编辑就可以正常运行了。它根据菜单选择发送一封关于状态更新的电子邮件。我也希望它添加到一栏的标题为“电子邮件发送”(如果这重要的O栏),当电子邮件发送出去。
这是当前的脚本:
function getColIndexByName(colName) {
var sheet = SpreadsheetApp.getActiveSheet();
var numColumns = sheet.getLastColumn();
var row = sheet.getRange(1, 1, 1, numColumns).getValues();
for (i in row[0]) {
var name = row[0][i];
if (name == colName) {
return parseInt(i) + 1;
}
}
return -1;
}
function emailStatusUpdates() {
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveRange().getRowIndex();
var userEmail = sheet.getRange(row, getColIndexByName("email")).getValue();
var subject = "Helpdesk Ticket #" + row;
var body = "We've updated the status of your ticket.\n\nStatus: " + sheet.getRange(row, getColIndexByName("Status")).getValue();
body += "\n\nNotes: " + sheet.getRange(row, getColIndexByName("Notes")).getValue();
body += "\n\nResolution: " + sheet.getRange(row, getColIndexByName("Resolution")).getValue();
MailApp.sendEmail(userEmail, subject, body, {name:"Help Desk"});
}
function onOpen() {
var subMenus = [{name:"Send Status Email", functionName: "emailStatusUpdates"}];
SpreadsheetApp.getActiveSpreadsheet().addMenu("Help Desk Menu", subMenus);
}发布于 2016-05-11 19:41:33
这看起来很琐碎。您将在setValue函数中的某个范围上使用emailStatusUpdates方法。
var confirmText = "Email sent at " +
Utilities.formatDate(new Date(), Session.getScriptTimeZone(),
"yyyy-MM-dd HH:mm:ss")
sheet.getRange(row, getColIndexByName("email date")).setValue(confirmText);我使用您的函数getColIndexByName来避免代码中的硬编码列"O“。您必须确保O列的标题与我们传递给这个函数的内容相匹配。
https://stackoverflow.com/questions/37171651
复制相似问题