Добрый день, есть код на javascript и таблица привязанная к нему, нужно сделать напоминал ку. Когда запускается код он не видит в таблице строку присвоения. вот результат
!- Никогда не вставляй код скришотом. Вставляй текстом. Тут написано как Как формулировать вопрос, подсвечивать код, благодарить
-
Когда запускается код он не видит в таблице строку присвоения.
Напиши в формате “что делаешь, что ожидаешь увидеть” тут описан формат Как формулировать вопрос, подсвечивать код, благодарить
Это все нужно чтобы было проще понять что происходит с кодом и проще помочь. В текущей формулировке никто в здравом уме не возьмется разбираться в том что ты показываешь.
Как мне запустить твой код, что для этого нужно?
function repotr_tg() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); // акцивация таблиц
var sheet = ss.getSheetByName("Reminder");
var date_arr = ss.getRange("A3:M1000").getValues();
//Logger.log(date_arr[1]);
var now_date = Utilities.formatDate(new Date( ), "GMT+3", "dd.MM.yyyy' 'HH:mm:ss"); // дата которая в данную секундку
//var date_last_notif = Utilities.formatDate(date_arr[1][5], "GMT+3", "dd.MM.yyyy' 'HH:mm:ss");
//Logger.log(date_last_notif);
//date_arr.length
//Logger.log(date_arr.length);
for (var i = 0; i < 20; i++) { // цикл обработки каждой строки
//date_arr[i][8] = Utilities.formatDate(new Date(date_arr[i][8]), "GMT+3", "dd.MM.yyyy' 'HH:mm:ss");
var ooo1 = Utilities.formatDate(new Date(date_arr[i][8]), "GMT+3", "dd.MM.yyyy' 'HH:mm:ss");
/* */
Logger.log(date_arr[i][6]);
Logger.log("Дата когда должно быть оповещение "+ooo1);
Logger.log("Дата сейчас "+now_date);
Logger.log(ooo1 < now_date);
Logger.log(date_arr[i][6] == true);
//Logger.log(ooo1+"<"+now_date+" Условие");
//Logger.log((ooo1 < now_date));
if(ooo1 < now_date && date_arr[i][6] == true ){
//Logger.log(ooo1+"<"+now_date+" ОТРАБОТАЛО");
// В этом блоке считаем даты
var new_date = new Date();
var date_future_notif_new = new Date(new_date.setDate(new_date.getDate()+ date_arr[i][6])); // дата , которая + какое то количество дней
var date_future_notif_new_format = Utilities.formatDate(date_future_notif_new, "GMT+3", "dd.MM.yyyy' 'HH:mm:ss").toString(); // превращаем его в стринг
var split_date = date_future_notif_new_format.split(" "); // отпиливаем часть в временем
var date_future_notif_new_format2 = split_date[0]+" "+date_arr[i][5]; // джойним часть с нужным временем
date_arr[i][8] = date_future_notif_new_format2; // ставим дату следующего нотифа
date_arr[i][7] = Utilities.formatDate(new Date(), "GMT+3", "dd.MM.yyyy' 'HH:mm:ss"); // ставим дату текущего нотифа
Logger.log("Отправили уведомлялку");
// присылаем уведомлялку
var response = UrlFetchApp.fetch("https://api.telegram.org/bot806432827:AAF0wL7-DYd8SuCZJj6bW520aeVPVW3Ji0o/sendMessage?chat_id="+date_arr[i][3]+"&text="+encodeURIComponent(date_arr[i][1]));
var products_data = JSON.parse(response);
ss.getRange("A3:M1000").setValues(date_arr);
date_arr = ss.getRange("A3:M1000").getValues();
}
return;
}
}
Какую именно строку ты имеешь в виду?
Как выглядит “не видит” (что ты ожидаешь увидеть а что происходит на самом деле).
Как запустить этот код?
Как я понимаю, он должен брать в 5 строке, информацию из таблицы, из-за того, что он этого не делает он и не может выполнить условие в 26 строке
Дальше ломается логика кода и он не хочет выводить нужную информацию, которая заложена в таблице
Не понимаю вопрос: “Как запустить этот код?”
Попробуй поменять то как определяешь границы для диапазона в этой месте ss.getRange("A3:M1000")
. Очень возможно что "A3:M1000"
- невалидная запись. В документации есть несколько подходов, попробуй этот https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow-column-numrows-numcolumns. Если заработает, значит дело в формате строки.
спасибо, сейчас попробую