我正在尝试使用谷歌应用程序脚本和谷歌工作表基本上每次NHL团队播放时自动更新带有统计信息的谷歌表。如何在Google Apps Scripts环境中查询nhl.com在线数据库?例如 - 我感兴趣的统计数据是某个团队的总积分。如何从Google Apps脚本中的nhl.com获取整数值?
答案 0 :(得分:0)
您需要使用作为GAS服务的UrlFetchApp来发送http请求并接受回复。
您的代码可能类似于:
function getMatchResults() {
var options = {
'method': 'get',
//and any other additional parameters you might need
};
var url = 'http://www.nhl.com/stats/team?aggregate=0&gameType=2&report=teamsummary&teamId=24&reportType=season&seasonFrom=20172018&seasonTo=20172018&filter=gamesPlayed,gte,1&sort=points%22'
var results = UrlFetchApp.fetch(url, options);
Logger.log(results);
var ss = SpreadsheetApp.getActiveSpreadsheet();
//further on goes your code to actually save the results into your sheet
}
如果您需要定期运行此功能,则需要设置时间驱动的触发器,其描述为here。
更新: 在您发表评论之后,第二部分就是第二部分。 起初,我假设nhl.com有某种API会以JSON格式返回响应,但事实并非如此。这就是你在JSON.parse上收到错误的原因 - 返回的结果不是JSON对象而是HTML网页。
因此,您的任务变得棘手:您尝试抓取页面并从html中获取结果或使用第三方API,例如MySportFeeds。您还可以看到此Quora discussion。
如果您使用似乎免费供个人使用的MySportFeeds,则上述功能可能类似于:
function getMatchResults() {
var headers = {
'Authorization': 'username:password',
};
var options = {
'method': 'get',
'headers': headers,
//and any other additional parameters you might need
};
var url = 'https://www.mysportsfeeds.com/api/feed/pull/nfl/2016-2017-regular/scoreboard.json?fordate=20161211'
var results = UrlFetchApp.fetch(url, options);
Logger.log(results);
var ss = SpreadsheetApp.getActiveSpreadsheet();
//further on goes your code to actually save the results into your sheet
}
更新#2:
根据另外一条评论:)您实际上有3个选项:
使用最后一个选项,代码如下:
function getMatchResults() {
var headers = {
"Origin": "http://http://www.nhl.com/"
};
var options = {
'method': 'get',
//and any other additional parameters you might need
};
var baseUrl = 'http://www.nhl.com/stats/rest/individual/team/basic/game/teamsummary'
var urlParameters = '?cayenneExp=teamId=23';
var url = baseUrl + urlParameters;
var results = UrlFetchApp.fetch(url, options);
Logger.log(results);
var ss = SpreadsheetApp.getActiveSpreadsheet();
//further on goes your code to actually save the results into your sheet
}
您可以在此处看到http://www.nhl.com/stats/rest/individual/team/basic/game/teamsummary?cayenneExp=返回统计信息,并在cayenneExp
参数中指定其他设置(例如teamId = 23,即示例中的温哥华)。这就是它在devtools中的样子:http://take.ms/fSH7H