Возможно, проблема в том, что sendEmail
не вызывается с ожидаемым диапазоном. Вы можете устранить проблему, вставив операторы журнала, например Logger.log(range.getA1Notation())
, в верхней части функции sendEmail
.
Если диапазон не соответствует заданному, попробуйте вызвать функцию с другим, более явным диапазоном, нежели тот, который присоединен к e
.
Я полагаю, вы пытаетесь выбрать самую нижнюю (самую последнюю) строку на листе, включая дополнительный столбец, не включенный в e
. Если это так, это может сработать для вас:
function assignID(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var colID = sheet.getLastRow();
sheet.getRange(colID, 1).setValue(colID);
SpreadsheetApp.flush();
var eventRow = e.range.getRow();
var eventNumCols = e.range.getNumColumns();
var startRow = eventRow;
var startCol = 1;
var numRows = 1;
var numCols = eventNumCols + 1;
var range = sheet.getRange(startRow, startCol, numRows, numCols);
sendEmail(range);
}
function sendEmail(range) {
var values = range.getValues();
var row = values[0];
var ncID = row[0];
var ncDate = row[1];
var ncType = row[2];
var ncLocation = row[3];
var ncJobNo = row[4];
var ncPartNo = row[5];
var ncPartDesc = row[6];
var ncPartQty = row[7];
var ncDetails = row[8];
var ncPhotos = row[9];
var ncProposedSol = row[10];
var ncEmail = row[11];
...
}
Кроме того, вы можете изучить возможности в виде шаблона HTML , которые позволяют вам поместить большую часть HTML в отдельный файл вместо того, чтобы создавать его с помощью JavaScript.