Javascript SyntaxError:使用Google应用程序脚本输入XML数据时出现意外标识符
因此,我通过API从休假系统获取休假数据,并将其发布到google工作表中,下面是示例响应xml响应Javascript SyntaxError:使用Google应用程序脚本输入XML数据时出现意外标识符,javascript,arrays,xml,google-apps-script,google-sheets,Javascript,Arrays,Xml,Google Apps Script,Google Sheets,因此,我通过API从休假系统获取休假数据,并将其发布到google工作表中,下面是示例响应xml响应 <?xml version='1.0' encoding='ISO-8859-1'?> <DataService> <Request ID="1253" Status="Approved"> <TimeOffDate>2020-02-07</TimeOffDate> <TimeOffDayO
<?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>
2020-02-07
星期五
8
年假
测试用户
测验
使用者
2019-10-03
对
下面是我用来获取数据并将其设置为GoogleSheet的代码。我的挑战是,我不确定如何从响应中获取属性ID和Status,并将其推送到requestObjects数组。每次尝试使用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));
}
}
};
var url='1〕https://data.purelyhr.com/xml?ak=“+ak+”&sDate=“+start+”&eDate=“+end+”&TimeOffTypeName“+”&page=”+pages;
var response=UrlFetchApp.fetch(url.getContentText();
var document=XmlService.parse(响应);
var root=document.getRootElement();
//将变量设置为PurelyHR中的数据
var requestElements=root.getChildren('Request');//获取所有元素
var requestObjects=[];//请求对象进行日志记录/最终打印
对于(var i=0;i
G表上的结果
在
元素
实例上调用getAttribute()
函数时,它返回属性
类的实例。然后需要对该属性实例调用getValue()
。例如:
var id=request.getAttribute(“id”).getValue();
请注意,返回的值的类型始终为String
,对象的ID和状态字段没有属性名。@只是我无法复制它。正如Pointy所写的,可能是其中一个元素没有ID或Status属性。我可以问一下您期望的结果吗?@Tanaike,我的意图是将状态作为字符串获取,即已批准或已取消,但所获取的是[Status='PROVIDED'],而不是我想要的want@Tanaike,非常感谢。我修改了它,它工作了。顺便说一句,你理解得对。谢谢你看这个。我已经这样做了,正如我编辑的代码中所指出的,我在G表中得到的似乎很奇怪。请看编辑的问题。Thanks@Just不要只是复制粘贴示例代码;尝试理解其背后的逻辑,然后将其应用到您的用例中。查看您的代码,看看您应该在哪里调用getValue()
方法(提示…您还应该在哪里调用getAttribute()
函数)。