【问题标题】:google scripting to email someone when their name is inserted into a cell谷歌脚本在某人的名字插入单元格时向其发送电子邮件
【发布时间】:2014-04-15 15:29:21
【问题描述】:
我正在尝试使用谷歌电子表格制作票务系统,其中员工或客户可以在表单中输入他们的查询,并将其保存到我可以查看的电子表格中。我需要的一件事是能够在查询行中填写一个带有员工姓名的单元格,这将把该员工分配给这个问题以尝试解决它。我需要知道是否有办法使用谷歌脚本来做到这一点。如果您要检查整个列,我知道该怎么做,但是我不想每次向单元格添加名称时都向所有人发送电子邮件,而只是那个人。
例如,客户填写表格说他们遇到问题 A,一旦我进入电子表格,我发现它已更新并希望将问题分配给特定人员,因此我填写了我已经指定我可以填写分配给谁的列。一旦我将它分配给一个人,他们就会收到一封包含该行数据的电子邮件,以便他们知道问题所在。
希望我已经解释得够多了。任何帮助是极大的赞赏。
【问题讨论】:
标签:
excel
scripting
google-apps-script
spreadsheet
issue-tracking
【解决方案1】:
我做了一个简单的例子:
您必须检查代码并使其适应您的特定设置(即:工作表名称、数据位置等...)。
希望对您有所帮助。
function onEdit(e) {
doEvent(e);
}
function doEvent(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = e.source.getActiveSheet();
var sheetName = sheet.getName();
var r = e.source.getActiveRange();
var col = r.getColumn() ;
var row = r.getRow();
var i = 0 ;
switch ( sheetName ) {
case 'MySheet' : // just to make sure you are on the right sheet
if ( row > 1 ) { // skip headers row if you have
var ticketDataRange = sheet.getRange(row, 1, 1, numberOfColumnsToGrab);
var ticketData = ticketDataRange.getValues();
if ( col == columnEmailOfOwnerOfTicket ) {
var emailOwnerOfTicket = ticketData[columnEmailOfOwnerOfTicker-1];
GmailApp.sendEmail( emailOwnerOfTicket, "New Task Assigned", '', {htmlBody: 'A new task has been assigned to you by: <strong>Me!</strong><br>Task Linked to Contact: <strong>BlahBlah</strong><br><br>Here can be description' + ticketData[positionOfDescription].replace(/\n/g, '<br>') + '<br><br><p>Due Date: <strong>' + Utilities.formatDate(ticketData[positionOfDueDate],SpreadsheetApp.getActive().getSpreadsheetTimeZone(),"EEE, MMM d, yyyy") + '</strong></p><br>' } );
}
}
break;
}
}