Javascript 缺少分析API(应用程序脚本)文档?|&引用;getItems";vs";项目“;以及其他问题
大家好(提前谢谢你们的帮助)!我真的很想知道分析API(管理API): 谷歌工作表/应用程序脚本/分析 我在谷歌工作,所以我使用应用程序脚本来提取数据。应用程序脚本的文档本身是不言自明的,但分析管理API与应用程序脚本的结合似乎没有任何内容。到目前为止,我一直在关注Javascript示例,以了解一些细节 隐藏函数? 然而,我在各种示例中找到了许多可用的函数,但在文档中却找不到。例如:Javascript 缺少分析API(应用程序脚本)文档?|&引用;getItems";vs";项目“;以及其他问题,javascript,google-apps-script,google-analytics,google-analytics-api,Javascript,Google Apps Script,Google Analytics,Google Analytics Api,大家好(提前谢谢你们的帮助)!我真的很想知道分析API(管理API): 谷歌工作表/应用程序脚本/分析 我在谷歌工作,所以我使用应用程序脚本来提取数据。应用程序脚本的文档本身是不言自明的,但分析管理API与应用程序脚本的结合似乎没有任何内容。到目前为止,我一直在关注Javascript示例,以了解一些细节 隐藏函数? 然而,我在各种示例中找到了许多可用的函数,但在文档中却找不到。例如: var properties = Analytics.Management.Webproperties.lis
var properties = Analytics.Management.Webproperties.list(AcountID);
var webPropertyIdOfFirstElement = properties.getItems()[0].getId();
将返回第一个元素的ID
文档
但是,根据本文档(Javascript)
实际代码(返回相同的代码)应为:
var results = Analytics.Management.Webproperties.list(accountID);
var properties = results.items;
var property = properties[0];
var theID = property.id;
哪里
所以我的问题是功能在哪里
getItems()[X] and .getId()
这些不是javascript内置函数吗?有什么我一直丢失的秘密文件吗?我真的很想知道
以及(与示例中的上述页面相同)。有人能解释一下“执行”功能吗。老实说,我以前从未见过这种情况。这是怎么回事
function listProperties() {
var request = gapi.client.analytics.management.webproperties.list({
'accountId': '123456'
});
request.execute(printProperties);
}
function printProperties(results) { //do stuff }
??“执行”并将函数作为参数传递?嗯?这个答案怎么样
对问题1的答复:
- 您想知道
与var res=Analytics.Management.Webproperties.list(AcountID)
res.getItems()[0].getId()之间的差异
value1
和value2
是相同的。但是items
和getItems
分别是键和函数
var res = Analytics.Management.Webproperties.list(AcountID);
var value1 = res.items[0].id;
var value2 = res.getItems()[0].getId();
似乎可以通过将get
添加到顶部并将其作为函数运行来检索每个值。函数名必须是驼峰大小写
但是我在官方文件和脚本编辑器的完成功能中找不到这样的功能。所以我认为这些函数可能是隐藏函数
在Advanced Google Services中,我们可以通过脚本编辑器的完成功能确认创建API请求主体的功能。但是,尽管无法找到用于检索值的函数,但这些函数可以用作隐藏方法。这样的函数也可以确认其他API存在这样的隐藏方法
其他情况:
例如,与其他情况一样,在Sheets API中,您可以在以下脚本中看到隐藏函数
var r = Sheets.Spreadsheets.Values.batchGet(spreadsheetId, {ranges: ["Sheet1", "Sheet2"]});
var value1a = r.spreadsheetId;
var value1b = r.getSpreadsheetId();
var value2a = r.valueRanges;
var value2b = r.getValueRanges();
var r = Sheets.Spreadsheets.Values.batchGet(spreadsheetId, {ranges: ["Sheet1", "Sheet2"]});
Logger.log(typeof r.getSpreadsheetId)
Logger.log(typeof r.getValueRanges)
在这种情况下,value1a
和value1b
是相同的。而且value2a
和value2b
也是相同的。为了确认是否可以使用getSpreadsheetId()
和getValueRanges()
,我使用以下脚本
var r = Sheets.Spreadsheets.Values.batchGet(spreadsheetId, {ranges: ["Sheet1", "Sheet2"]});
var value1a = r.spreadsheetId;
var value1b = r.getSpreadsheetId();
var value2a = r.valueRanges;
var value2b = r.getValueRanges();
var r = Sheets.Spreadsheets.Values.batchGet(spreadsheetId, {ranges: ["Sheet1", "Sheet2"]});
Logger.log(typeof r.getSpreadsheetId)
Logger.log(typeof r.getValueRanges)
如果它可以用作函数,日志将显示函数
。如果不能将其用作函数,则返回未定义的
对问题2的答复:
- 您想了解google api javascript客户端的
execute()
result
参数相当于的回调中的第一个参数。要更新代码以使用承诺,请按照下面的前后示例中所示更改代码
以下示例显示如何使用回调:
gapi.client.request({
'path': 'plus/v1/people',
'params': {'query': name}
}).execute(function(resp, rawResp) {
processResponse(resp);
});
您可以重写上面显示的示例,使用如下承诺:
gapi.client.request({
'path': 'plus/v1/people',
'params': {'query': name}
}).then(function(resp) {
processResponse(resp.result);
});
参考资料:
如果我误解了你的问题,而这不是你想要的答案,我深表歉意。非常感谢你抽出时间写下如此详细的答案!非常感谢
Logger.log(typeof var.function)
对于确定是否存在用于检索对象属性的“隐藏”函数非常有用。直到现在我才知道这件事。从现在起,我可能会经常使用它:)也谢谢你给我指出承诺。“我们将对此进行更详细的调查。”sebieire感谢您的回复。我很高兴你的问题解决了。也谢谢你。