XmlService addNamespace方法正在向子元素添加空白XML命名空间
我试图只向根元素添加名称空间,但这样做似乎会向所有直接子元素添加XmlService addNamespace方法正在向子元素添加空白XML命名空间,xml,google-apps-script,xml-namespaces,Xml,Google Apps Script,Xml Namespaces,我试图只向根元素添加名称空间,但这样做似乎会向所有直接子元素添加xmlns=“”。这导致Google AdWords API返回错误 这是我的密码: var adwordsNameSpace = XmlService.getNamespace('https://adwords.google.com/api/adwords/cm/v201809'); var root = XmlService.createElement('reportDefinition') .setNamespace
xmlns=“”
。这导致Google AdWords API返回错误
这是我的密码:
var adwordsNameSpace = XmlService.getNamespace('https://adwords.google.com/api/adwords/cm/v201809');
var root = XmlService.createElement('reportDefinition')
.setNamespace(adwordsNameSpace)
var selector = XmlService.createElement('selector')
var fields = ['Clicks', 'Ctr', 'Cost'];
fields.forEach(function (field) {
var xml = XmlService.createElement('fields').setText(field);
selector.addContent(xml)
})
root.addContent(selector)
var options = [
['reportName', 'Custom Report'],
['reportType', 'ACCOUNT_PERFORMANCE_REPORT'],
['dateRangeType', 'LAST_7_DAYS'],
['downloadFormat', 'XML']
]
options.forEach(function(option) {
root.addContent(XmlService.createElement(option[0]).setText(option[1]))
})
var document = XmlService.createDocument(root);
var xml = XmlService.getPrettyFormat().format(document);
Logger.log(xml);
这是最终的结果:
<?xml version="1.0" encoding="UTF-8"?>
<reportDefinition xmlns="https://adwords.google.com/api/adwords/cm/v201809">
<selector xmlns="">
<fields>Clicks</fields>
<fields>Ctr</fields>
<fields>Cost</fields>
</selector>
<reportName xmlns="">Custom Report</reportName>
<reportType xmlns="">ACCOUNT_PERFORMANCE_REPORT</reportType>
<dateRangeType xmlns="">LAST_7_DAYS</dateRangeType>
<downloadFormat xmlns="">XML</downloadFormat>
</reportDefinition>
咔哒声
中心
成本
自定义报告
客户绩效报告
最后7天
XML
如何防止或轻松删除这些空白属性?一旦在某个父元素上声明了名称空间,就必须在后续元素上继续使用该名称空间
XmlService.createElement
接受命名空间的第二个参数,因此不必调用单独的函数来设置命名空间
函数XMLTest(){
var adwordsNameSpace=XmlService.getNamespace(“https://adwords.google.com/api/adwords/cm/v201809");
var root=XmlService.createElement('reportDefinition',adwordsNameSpace);
var selector=XmlService.createElement('selector',adwordsNameSpace);
['Clicks','Ctr','Cost'].forEach(函数(字段){
var xml=XmlService.createElement('fields',adwordsNameSpace).setText(field);
selector.addContent(xml)
});
root.addContent(选择器);
变量选项={
reportName:“自定义报告”,
报告类型:“账户绩效报告”,
dateRangeType:“最近7天”,
下载格式:“XML”
};
for(选项中的变量标记名){
root.addContent(XmlService.createElement(标记名,adwordsNameSpace.setText(选项[tagName]))
}
var document=XmlService.createDocument(根);
var xml=XmlService.getPrettyFormat().format(文档);
Logger.log(xml);
}
/*记录器输出:
咔哒声
中心
成本
自定义报告
客户绩效报告
最后7天
XML
*/
一旦在某个父元素上声明了名称空间,就必须在后续元素上继续使用该名称空间XmlService.createElement
接受命名空间的第二个参数,因此不必调用单独的函数来设置命名空间
函数XMLTest(){
var adwordsNameSpace=XmlService.getNamespace(“https://adwords.google.com/api/adwords/cm/v201809");
var root=XmlService.createElement('reportDefinition',adwordsNameSpace);
var selector=XmlService.createElement('selector',adwordsNameSpace);
['Clicks','Ctr','Cost'].forEach(函数(字段){
var xml=XmlService.createElement('fields',adwordsNameSpace).setText(field);
selector.addContent(xml)
});
root.addContent(选择器);
变量选项={
reportName:“自定义报告”,
报告类型:“账户绩效报告”,
dateRangeType:“最近7天”,
下载格式:“XML”
};
for(选项中的变量标记名){
root.addContent(XmlService.createElement(标记名,adwordsNameSpace.setText(选项[tagName]))
}
var document=XmlService.createDocument(根);
var xml=XmlService.getPrettyFormat().format(文档);
Logger.log(xml);
}
/*记录器输出:
咔哒声
中心
成本
自定义报告
客户绩效报告
最后7天
XML
*/