所以似乎Sling(sling.is)更新了their API,但从未发送过包含警告或信息的电子邮件,因此我的脚本已损坏。我的代码的最终目标(在更新之前工作正常)是在公司活动获得批准后,简单地将员工轮班发布到Sling。
我在谷歌应用脚本中运行所有这些代码,因为我需要从电子表格中提取数据来创建轮班。代码首先工作"添加"转移到系统,然后第二次"发布"这些转变让所有员工都能看到他们。我设法弄清楚如何修复第一部分,因为它似乎切换了一些基本的语法。但我不能为我的生活弄清楚如何解决第二个(出版)部分。
Sling没有为他们的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);
我甚至尝试从JSON选项中完全删除了payload(body)参数。
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);
然后它说
&#34; https://api.sling.is/v1/shifts/sync返回的代码400请求失败。 截断的服务器响应: {&#34; message&#34;:&#34;发布需要日期范围或列表 事件&#34;}(使用muteHttpExceptions选项检查完整响应) (第256行,文件&#34;代码&#34;)&#34;
Sling API&#34;&#34;文档&#34;有关班次过帐功能,请访问:https://api.sling.is/#/shifts/post_shifts_sync
非常感谢任何帮助。
答案 0 :(得分:0)
在你问题的the API document中,似乎请求正文是一个包含数组的对象。似乎关键是event
。那么请你试试这个修改过的脚本吗?运行时,请设置notes
和headers
。
var payloadtwo = {
"event": [ // or "Event"
{
"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',
'payload': JSON.stringify(payloadtwo),
'headers': headers,
'muteHttpExceptions': true,
};
var res = UrlFetchApp.fetch("https://api.sling.is/v1/shifts/sync", optionstwo);
Logger.log(res)
'payload': JSON.stringify(payloadtwo),
修改为'payload': payloadtwo,
并再次运行。我无法尝试测试,因为我没有帐号。因此,如果此脚本出现错误,请告诉我。我想考虑其他修改点。
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',
'payload': JSON.stringify(payloadtwo), // or payloadtwo
'headers': headers,
'muteHttpExceptions': true,
};
var res = UrlFetchApp.fetch("https://api.sling.is/v1/shifts/sync", optionstwo);
Logger.log(res)