Похоже, что Sling ( sling.is ) обновил их API , но никогда не отправлял электронное письмо с предупреждением или информацией, поэтому мой скрипт не работает.Конечная цель моего кода (который работал до их обновления) - просто опубликовать смены для сотрудников в Sling после одобрения мероприятия компании.
Я запускаю весь этот код в скрипте приложений Google, так как мне нужно извлечь данные из электронной таблицы, чтобы создать смены.Код работает, сначала «добавляя» смены в систему, а затем, во-вторых, «публикует» эти смены, чтобы все сотрудники могли их видеть.Мне удалось выяснить, как исправить первую часть, так как кажется, что они поменяли базовый синтаксис.Но я не могу понять, как исправить вторую (издательскую) часть.
Слинг не предлагает никакой поддержки их API, поэтому я подумал, что размещение здесь будет моей следующей лучшей ставкой.
Вот ошибка, которую я получаю:
"Запрос не выполнен для https://api.sling.is/v1/shifts/sync, возвращен код 500. Усеченный ответ сервера: {" message ":" Упс, произошла непредвиденная ошибка. "} (Используйте параметр muteHttpExceptions для проверки полного ответа) (строка 257, файл")Код ")"
//CREATE SHIFTS ON SLING
//This is pulling data from google spreadsheet cells
var staff = getByName('Attendants', row);
var start = Utilities.formatDate(getByName('Date', row),
ss.getSpreadsheetTimeZone(), "YYYY-MM-dd") + "T" +
Utilities.formatDate(getByName('Starting Time of Attendants', row),
ss.getSpreadsheetTimeZone(), "H:mm") + ":00.000-04";
var end = Utilities.formatDate(getByName('Date', row),
ss.getSpreadsheetTimeZone(), "YYYY-MM-dd") + "T" +
Utilities.formatDate(getByName('Ending Time of Attendants', row),
ss.getSpreadsheetTimeZone(), "H:mm") + ":00.000-04";
var notes = getByName('City', row) + ", " + getByName('Event Type', row)
var payload = {
"available": true,
"dtstart": start,
"dtend": end,
"location": {
"id": 1022310
},
"position": {
"id": 1022302
},
"summary": notes,
"user": {
"id": 1
}
};
var headers = {
"Authorization" : "9e632842f4e61927336337f1aa65b75c"
};
var options = {
'method' : 'post',
'contentType': 'application/json',
'headers' : headers,
'payload' : JSON.stringify(payload)
};
for(i=1; i<=staff; i++){
UrlFetchApp.fetch("https://api.sling.is/v1/shifts?
ignoreConflicts=false&publish=true", options);
}
// All of that ^^ works
var payloadtwo =
{
"summary": notes
};
var optionstwo = {
'method' : 'post',
'contentType': 'application/json',
'headers' : headers,
'payload' : JSON.stringify(payloadtwo)
};
UrlFetchApp.fetch("https://api.sling.is/v1/shifts/sync", optionstwo);
Я даже попытался полностью удалить параметр payload (body) из опций JSON.
var payloadtwo = {
"summary": notes,
"dtstart": "2018-11-07T12:00:00:00.000-04",
"dtend": "2018-11-09T12:00:00:00.000-04"
};
var optionstwo = {
'method' : 'post',
'contentType': 'application/json',
'headers' : headers
};
UrlFetchApp.fetch("https://api.sling.is/v1/shifts/sync", optionstwo);
и затем он говорит
"Запрос не выполнен для https://api.sling.is/v1/shifts/sync, возвращен код 400. Усеченный ответ сервера: {" message ":" Для публикации требуется либо диапазон дат, либо список событий "} (используйте параметр muteHttpExceptions для проверки полного ответа)(строка 256, файл "Код") "
" Документация "Sling API для функции сменной публикации доступна здесь: https://api.sling.is/#/shifts/post_shifts_sync
Любая помощь будет принята с благодарностью.