Я настроил скрипт для извлечения данных из JSON API в Google Sheet.Я установил его для обновления, добавив третий параметр, который не используется в вызове API, но связан с ячейкой, к которой другой скрипт добавляет текущее время.Это гарантирует, что API вызывается регулярно.
Затем мы используем этот лист Google для ввода данных в объявления Google.
Однако все работает нормально, когда лист закрывается на некоторое время (например, на ночь) и GoogleРеклама пытается обновить с листа, она импортирует #NAME?вместо правильного значения API.
Я установил другой скрипт, который записывает значения API через равные промежутки времени.Кажется, что это правильно записывает значения, предполагая, что вызовы API работают, пока лист закрыт.
// Make a POST request with a JSON payload.
// Datetime parameter isn't use in API call but is used to refresh data
function TheLottAPI(game,attribute,datetime) {
var data = {
'CompanyId': 'GoldenCasket',
'MaxDrawCount': 1,
'OptionalProductFilter': [game]};
Logger.log(data);
var options = {
'method' : 'post',
'contentType': 'application/json',
// Convert the JavaScript object to a JSON string.
'payload' : JSON.stringify(data)};
var response = UrlFetchApp.fetch('https://data.api.thelott.com/sales/vmax/web/data/lotto/opendraws', options);
Logger.log('output: '+ response);
// Convert JSON response into list
var json = JSON.parse(response)
var drawList=json ["Draws"];
// Extract attribute from list
for(var i=0;i<drawList.length;i++)
{var value=drawList[i][attribute];}
Logger.log(value)
return value;
SpreadsheetApp.flush();
};
// Set date & time to refresh API call
function RefreshTime() {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Attributes").getRange("K4").setValue(new Date().toTimeString());
}
Должны отображаться правильные числовые значения из API, а не #NAME?ошибка.
Я проверил, что вызов API работает правильно, используя другой скрипт для копирования текущих значений.API обновлялся в подходящее время в течение ночи.
function RecordDraws() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Draw Amounts");
var source = sheet.getRange("A3:D3");
var values = source.getValues();
values[0];
sheet.appendRow(values[0]);
};