Here's an example of my script that is working:
function onFormSubmit(e) {
var date = e.values[0];
var user = e.values[1];
var busUnit = e.values[2];
var body = "Request for Add-On form submission" +"\n\n"+"Date:\t\t\t\t"+date +"\n"+ "Employee Email:\t\t"+user +"\n"+"Business Unit:\t\t"+busUnit +"\n\n" +"Form Responses:\t\t" + "https://docs.google.com/spreadsheets/d/ID/";
if (busUnit=="Acme")
{
MailApp.sendEmail("admin@acme.com", "Request for Add-On Submission",body);
}
if (busUnit=="fakename")
{
MailApp.sendEmail("admin@fakename.com", "Request for Add-On Submission",body);
}
if (busUnit=="fakename2")
{
MailApp.sendEmail("admin@fakename.com", "Request for Add-On Submission",body);
}
}
function getColIndexByName(colName) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().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 Email = "alladmins@fakename.com";
var subject = "Add-On Request Update";
var body = "The Fake Team has updated the status of the latest request.\n\nStatus: " + sheet.getRange(row, getColIndexByName("approval status")).getValue();
body += "\n\nRequest: " + sheet.getRange(row, getColIndexByName("What are you requesting to have approved?")).getValue();
body += "\n\nDescription: " + sheet.getRange(row, getColIndexByName("Provide a brief description")).getValue();
//body += "\n\nNotes: " + sheet.getRange(row, getColIndexByName("Notes")).getValue();
//body += "\n\nURL: "+ "https://docs.google.com/spreadsheets/d/ID/";
MailApp.sendEmail(Email, subject, body, {name:"The Fake Team"});
}
function onOpen() {
var subMenus = [{name:"Send Approval Status", functionName: "emailStatusUpdates"}];
SpreadsheetApp.getActiveSpreadsheet().addMenu("Send Status Update", subMenus);
}
I want to enable the last 2 body += rows. When I do that, I get this error:
Exception: The starting column of the range is too small.at emailStatusUpdates(Code:45:99)
I tried changing this line to var row = sheet.getRange(1, 1, 1, 4, numColumns).getValues();, but then I get this error:
Exception: The parameters (number,number,number,number) don't match the method signature for SpreadsheetApp.Sheet.getRange. at getColIndexByName(Code:30:19) at emailStatusUpdates(Code:45:113)