Есть нужда подтягивать статус ТТН новой почты для гугл таблиц. Есть код который это делает, но работает под конкретную ячейку, которую пропишешь. До 100 рядов я сделал под каждую строку отдельный код (это долго, но работало), но теперь нужно на тысячи строк сделать, поэтому нужно зациклить этот код, который будет вытягивать статусы до последнего номера ТТН, будь 100 или 15000.
Мой код выглядит как на 1 фото (берет ТТН с 2 строки, прописывает статус, далее код для 3 строки и так далее. Неэффективно для масштабов.
Вот код для конкетной строки, его же нужно зациклить, чтоб этот цикл опускался вниз до тех пор, пока не закончатся номера ТТН. Т.е. если в документе 15 ттн, нужно вытащить статус только для 15 строк и далее скрипт должен остановиться. Если ТТН-ок 1000, нужно вытащить статус всех 1000 ттн, т.е. не должен останавливаться до тех пор, пока не закончатся ттн.
const apiKey = "--------------------------------------------";
const url = "https://api.novaposhta.ua/v2.0/json/";
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheetNP = ss.getSheetByName("---------");
function onOpen(){
var ui = SpreadsheetApp.getUi();
ui.createMenu("Проверка ТТН")
.addItem("Проверка ТТН", "getStatus")
.addToUi();
}
function getStatus() {
let ttn2 = sheetNP.getRange("n2").getValue();
let data2 = {
"modelName": "TrackingDocument",
"calledMethod": "getStatusDocuments",
"methodProperties": {
"Documents": [
{
"DocumentNumber": ttn2.toString(),
}
]
}
};
let options2 = {
"method": "POST",
"headers": {
"content-type": "application/json",
"apiKey": apiKey
},
"async": true,
"crossDomain": true,
"processData": false,
"payload": JSON.stringify(data2)
}
let response2 = UrlFetchApp.fetch(url, options2);
let dataPars2 = JSON.parse(response2.getContentText());
sheetNP.getRange("o2").setValue(dataPars2.data[0].Status)
// console.log(dataPars2.data[0].Status)
}