У меня есть несколько таблиц на одном листе, и мне нужно сделать скрипт для отправки электронной почты каждый день. Сценарий, который он ищет сегодня, дату, сопоставляет его с моей таблицей и возвращает номер столбца, затем я ищу Total в первом столбце (A) и однажды нашел его, вернул номер строки. Как только у меня будет номер строки и номер столбца, верните общее значение для этого дня. Я не продвинутый с JavaScript, и я борюсь с массивами (все еще изучая). Сценарий, который я до сих пор работает, очень хорош, так как на этом листе у меня есть только одна таблица, но на листе будет более 50 таблиц, каждая из которых будет иметь итоговое значение в конце. Формула я найдет Total, но вернет все итоговые значения (номера строк) в виде строк. Мне нужно получить только первое Total (номер строки). Надеюсь, все это имеет смысл.
Я приложил изображение, чтобы составить представление, и мой сценарий, который у меня есть до сих пор:
function getTodaysTotal() {
function toDateFormat(date) {
try {return date.setHours(0,0,0,0);}
catch(e) {return;}
}
var values = SpreadsheetApp
.openById("ID")
.getSheetByName("Q3 - W27 - 39")
.getDataRange()
.getValues();
for (i in values){
if (values[i][0]=='Total'){
var nr = i;
Logger.log(nr); // will return two values (41 - first total and
104 second total ... if you add more Total it will return all rows
numbers that contain word Total
}
}
var today = toDateFormat(new Date());
var todaysColumn =
values[5].map(toDateFormat).map(Number).indexOf(+today);
var output = values[nr][todaysColumn];
// Logger.log(output);
var emailDate = Utilities.formatDate(new Date(today),"GMT+1",
"dd/MM/yyyy");
Это только первая таблица, но в ней будет больше, и каждый будет иметь Total.
Спасибо!
С уважением!
Вы должны объявить nr вне своего цикла, так как вы будете использовать значение.
var nr = 0;
Поскольку вы читаете массив, вы должны использовать длину массива для цикла
for (var i=0; i<values.length; i++){
if (values[i][0]=='Total'){
nr = i;
Logger.log(nr);
break; // this will stop at the first match
}
}
После того, как вы получите свою сумму как строку, вы можете преобразовать ее в число, вызвав следующую функцию.
var string = values[a][b];
var num = Number(string);