Итак, я получаю данные об отпуске из системы Leave через API и публикую их на листе Google, а ниже приведен пример ответа xml.
<?xml version='1.0' encoding='ISO-8859-1'?>
<DataService>
<Request ID="1253" Status="Approved">
<TimeOffDate>2020-02-07</TimeOffDate>
<TimeOffDayOfWeek>Friday</TimeOffDayOfWeek>
<TimeStart></TimeStart>
<TimeEnd></TimeEnd>
<TimeOffHours>8.000</TimeOffHours>
<TimeOffTypeName>Annual Vacation</TimeOffTypeName>
<LoginID>testuser</LoginID>
<Firstname>test</Firstname>
<Lastname>user</Lastname>
<UserCategory></UserCategory>
<SubmittedDate>2019-10-03</SubmittedDate>
<Deducted>Yes</Deducted>
<Comment>
<![CDATA[* time-off request created by administrator]]>
</Comment>
</Request>
Ниже приведен код, который я использую для получения данных и установки их на лист Google. Моя проблема в том, что я не уверен, как получить атрибут ID и Status из ответа и pu sh в массив requestObjects. каждый раз, когда я пытаюсь извлечь атрибут sh, используя request.getAttribute ("ID") , я получаю сообщение об ошибке
SyntaxError: неожиданный идентификатор
};
var url = 'https://data.purelyhr.com/xml?ak=' + ak + '&sDate=' + start + '&eDate=' + end + '&TimeOffTypeName'+ '&page=' + pages;
var response = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(response);
var root = document.getRootElement();
//set variables to data from PurelyHR
var requestElements = root.getChildren('Request'); // Get all <Request> elements
var requestObjects = []; // Request objects for logging / eventual printing
for (var i = 0; i < requestElements.length; i++) {
var request = requestElements[i]; // A single <Request> element
var Status = request.getAttribute("Status").getValue();
// Add to requestObjects array
requestObjects.push({
Status:request.getAttribute("Status"),
TimeOffDate: request.getChild('TimeOffDate').getText(),
TimeOffDayOfWeek: request.getChild('TimeOffDayOfWeek').getText(),
TimeStart: request.getChild('TimeStart').getText(),
TimeEnd: request.getChild('TimeEnd').getText(),
TimeOffHours: request.getChild('TimeOffHours').getText(),
TimeOffTypeName: request.getChild('TimeOffTypeName').getText(),
LoginID: request.getChild('LoginID').getText(),
Firstname: request.getChild('Firstname').getText(),
Lastname: request.getChild('Lastname').getText(),
UserCategory: request.getChild('UserCategory').getText(),
SubmittedDate: request.getChild('SubmittedDate').getText(),
Deducted: request.getChild('Deducted').getText(),
Comment: request.getChild('Comment').getText()
});
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("A2:J").getValue();
for (var j = 0; j < requestObjects.length; j++) {
sheet.getRange(2 + j, 1).setValue(requestObjects[j].Status)
sheet.getRange(2 + j, 2).setValue(requestObjects[j].Firstname)
sheet.getRange(2 + j, 3).setValue(requestObjects[j].Lastname)
sheet.getRange(2 + j, 4).setValue(requestObjects[j].LoginID);
sheet.getRange(2 + j, 5).setValue(requestObjects[j].TimeOffTypeName);
sheet.getRange(2 + j, 6).setValue(requestObjects[j].TimeOffDayOfWeek);
sheet.getRange(2 + j, 7).setValue(requestObjects[j].SubmittedDate);
sheet.getRange(2 + j, 8).setValue(requestObjects[j].TimeOffHours)
sheet.getRange(2 + j, 9).setValue(requestObjects[j].TimeOffDate)
Logger.log(JSON.stringify(requestObjects));
}
}
Результаты на G лист