为了账号安全,请及时绑定邮箱和手机立即绑定

分析 API(应用程序脚本)文档丢失?| “getItems”与“items”以及其他问题

分析 API(应用程序脚本)文档丢失?| “getItems”与“items”以及其他问题

万千封印 2021-08-20 17:47:36
大家好(并提前感谢您的帮助)!我很想知道 Analytics API(管理 API):https : //developers.google.com/analytics/devguides/config/mgmt/v3/谷歌表格/应用程序脚本/分析我正在使用 Google Sheets 工作,所以我使用 Apps Script 来提取数据。Apps Script 本身的文档是不言自明的,但 Analytics Management API 与 Apps Script 的结合似乎没有任何内容。到目前为止,我一直在主要查看 Javascript 示例以接近结果。隐藏功能?但是,我在各种示例中找到了许多可用的功能,但在文档中却没有。例如:var properties = Analytics.Management.Webproperties.list(AcountID);var webPropertyIdOfFirstElement = properties.getItems()[0].getId();将返回第一个元素的 ID。文档但是根据本文档(Javascript)https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtReference/management/webproperties/list实际代码(返回相同)应该/应该是: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 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

这个答案怎么样?


问题 1 的答案:

您想知道区别res.items[0].id和res.getItems()[0].getId()for var res = Analytics.Management.Webproperties.list(AcountID)。

value1和value2下面的脚本是一样的。但是itemsandgetItems分别是键和函数。


var res = Analytics.Management.Webproperties.list(AcountID);

var value1 = res.items[0].id;

var value2 = res.getItems()[0].getId();

似乎可以通过添加get到顶部并将其作为函数运行来检索每个值。函数名必须是驼峰式大小写。


但是我在官方文档和脚本编辑器的补全功能中都没有找到这样的功能。所以我一直认为这样的功能可能是隐藏的功能。


在Advanced Google Services中,我们可以通过脚本编辑器的完成功能来确认创建API请求体的功能。Ref但是虽然找不到检索值的函数,但可以将它们用作隐藏方法。这样的函数也可以确认其他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();

在这种情况下,value1a和value1b都是一样的。并且也value2a和value2b是一样的。为了确认是否getSpreadsheetId()和getValueRanges()可以使用,我用下面的脚本。


var r = Sheets.Spreadsheets.Values.batchGet(spreadsheetId, {ranges: ["Sheet1", "Sheet2"]});

Logger.log(typeof r.getSpreadsheetId)

Logger.log(typeof r.getValueRanges)

如果它可以用作函数,则日志显示function。如果它不能用作函数,undefined则返回。


问题 2 的答案:

您想了解execute()google-api-javascript-client。

我认为答案可以在Using Promises 中看到。


从回调迁移到承诺

在result已达成的承诺值的参数等同于第一个参数execute的回调。要更新您的代码以使用 Promise,请更改您的代码,如下面的前后示例所示。


以下示例显示了如何使用回调:


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);

 });


查看完整回答
反对 回复 2021-08-20
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信