为 2018 年 NFL 比分导入 XML - 新 XML?
Import XML for NFL scores 2018 - New XML?
去年我获得了 IMPORTXML
,因此我可以获得 Google 表格的实时评分更新。我今天去用它为 2018 年做准备,它仍在提取去年的数据。我不知道我如何才能获得今年所需的信息,如果它发生了变化,或者是否太早了。我希望有更多知识的人可以指导我或指出正确的方向?
=importxml("http://www.nfl.com/liveupdate/scorestrip/ss.xml","//g/@eid" )
这是我用过的字段之一,2017年还在拉。谢谢!
看起来 XML 服务已停止或不太容易找到。
不过,我相信这个网站是 JSON 的等价网站。
http://www.nfl.com/liveupdate/scores/scores.json
并且该网站还提供实时数据,您可以按日期选择。
http://www.nfl.com/liveupdate/game-center/2018090600/2018090600_gtd.json
在查看第一个 link 的输出后,您似乎可以从中获取正在进行的比赛和安排的比赛,然后使用对 select 特定比赛的参考第二个 link 中的完整游戏细节。
下面是一个函数,您可以使用 http://www.nfl.com/liveupdate/scores/scores.json 将结果输入 Google-sheets 并显示 selected 字段。
要安装和使用它,请阅读此处的说明:
https://developers.google.com/apps-script/guides/sheets/functions#using_a_custom_function
在您的 sheet 中选择一个单元格并输入 = ReadNFLResults()
定期(比如每 2 分钟)运行 脚本,按照这些说明进行操作 https://www.quora.com/How-can-I-periodically-run-a-Google-Script-on-a-Spreadsheet
/** Imports NFL results to your spreadsheet Ex: ReadNFLResults()
* @customfunction
*/
function ReadNFLResults(){
try{
var res = UrlFetchApp.fetch("http://www.nfl.com/liveupdate/scores/scores.json");
var content = res.getContentText();
var json = JSON.parse(content);
// Extracts the keys (these change every week)
var keys = [];
for(var k in json) keys.push(k);
// Declare array for results
var NFLResults =[];
// Make a Title Row
NFLResults.push(["Date","Stadium","Time","Qtr","Home Team","Hs1","Hs2","Hs3","Hs4","HsT","Vis Team","As1","As2","As3","As4","AsT"]);
// Extracts the Games one per line
for(n=0; n<keys.length; n++){
var Date = ""+keys[n];
var Stadium = json[keys[n]]["stadium"];
var Clock = json[keys[n]]["clock"];
var TV = json[keys[n]]["media"]["tv"];
var Qtr = json[keys[n]]["qtr"];
var Home = json[keys[n]]["home"]["abbr"];
var Hs1 = json[keys[n]]["home"]["score"]["1"];
var Hs2 = json[keys[n]]["home"]["score"]["2"];
var Hs3 = json[keys[n]]["home"]["score"]["3"];
var Hs4 = json[keys[n]]["home"]["score"]["4"];
var HsT = json[keys[n]]["home"]["score"]["T"];
var Away = json[keys[n]]["away"]["abbr"];
var As1 = json[keys[n]]["away"]["score"]["1"];
var As2 = json[keys[n]]["away"]["score"]["2"];
var As3 = json[keys[n]]["away"]["score"]["3"];
var As4 = json[keys[n]]["away"]["score"]["4"];
var AsT = json[keys[n]]["away"]["score"]["T"];
NFLResults.push([Date,Stadium,Clock,Qtr,Home,Hs1,Hs2,Hs3,Hs4,HsT,Away,As1,As2,As3,As4,AsT]);
}
// Return array to Google-Sheets
return (NFLResults);
}
catch(err){
return "Error getting data";
}
}
以下是截至 2018 年 9 月 10 日的示例结果:
试试这个:
http://www.nfl.com/ajax/scorestrip?season=2018&seasonType=REG&week=1
看起来您必须为季节、类型和周指定查询字符串参数,但看起来输出可能是相同的。
这是我的脚本。它运作良好。不要忘记将脚本触发器设置为每分钟或您希望的频率自动 运行。
function GetNFLScore(){
var url = ('http://www.nfl.com/liveupdate/scores/scores.json');
var res = UrlFetchApp.fetch(url);
var content = res.getContentText();
var json = JSON.parse(content);
var bye = "";
// Extracts the keys (these change every week)
var keys = [];
for(var k in json) keys.push(k);
// Declare array for results
var NFLResults =[];
// Make a Title Row
NFLResults.push(["Qtr","Time","Home","Pts","Away","Pts","Pos.","Down","To Go","Yard Line","Note","Network"]);
// Extracts the Games one per line
for(n=0; n<keys.length; n++) {
var Clock = json[keys[n]]["clock"]; // Kickoff time if pregame, Game Clock if game time
var Qtr = json[keys[n]]["qtr"]; // Gamestate (Pre, or Final), Game quater if game time
var Home = json[keys[n]]["home"]["abbr"]; // Home Team
var HsT = json[keys[n]]["home"]["score"]["T"]; // Home Total Score
var Away = json[keys[n]]["away"]["abbr"]; // Away Team
var AsT = json[keys[n]]["away"]["score"]["T"]; // Away Total Score
var TV = json[keys[n]]["media"]["tv"]; // TV Network (NBC, FOX, ESPN, ect..)
var YardLine = json[keys[n]]["yl"]; // Current scrimage yard line
var PosTeam = json[keys[n]]["posteam"]; // Team with ball possession
var RedZone = json[keys[n]]["redzone"]; // Redzone boolean
var Down = json[keys[n]]["down"]; // Current Down
var ToGo = json[keys[n]]["togo"]; // Current To Go yardage for 1st down
var Note = json[keys[n]]["note"]; // Scoring play (Touchdown, Field Goal, Extra Point, Safety)
// Correcting team abbr
if( Home == "JAC" ){ Home = "JAX";} // JAC > JAX
else if( Home == "WAS" ){ Home = "WSH";} // WAS > WSH
else if( Home == "LA" ){ Home = "LAR";} // LA > LAR
if( Away == "LA" ){ Away = "LAR";}
else if( Away == "WAS" ){ Away = "WSH";}
else if( Away == "JAC" ){ Away = "JAC";}
// Clear non-score related game data if game is final
if( Qtr == "Final" ){
Clock = "";
PosTeam = "";
RedZone = "";
Down = "";
ToGo = "";
Note = "";
TV = "";
}
else if( Qtr == "Final OT" ){
Clock = "";
PosTeam = "";
RedZone = "";
Down = "";
ToGo = "";
Note = "";
TV = "";
}
// Display Game data
NFLResults.push([Qtr,Clock,Home,HsT,Away,AsT,PosTeam,Down,ToGo,YardLine,Note,TV]);
}
// Clear the bottom of the scoreboard from lack of scores caused by bye weeks
var rows = NFLResults.length
for(n=0; n<(17-rows); n++) {
NFLResults.push([bye,bye,bye,bye,bye,bye,bye,bye,bye,bye,bye,bye]); // N'SYNC
}
// Create new tab 'NFL Scores' if it doesn't exist.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var itt = ss.getSheetByName('NFL Scores');
if (!itt) {
ss.insertSheet('NFL Scores');
}
// Push Scoreboard to spreadsheet
SpreadsheetApp.getActive().getSheetByName('NFL Scores').getRange(1,1,17,12).setValues(NFLResults);
}
去年我获得了 IMPORTXML
,因此我可以获得 Google 表格的实时评分更新。我今天去用它为 2018 年做准备,它仍在提取去年的数据。我不知道我如何才能获得今年所需的信息,如果它发生了变化,或者是否太早了。我希望有更多知识的人可以指导我或指出正确的方向?
=importxml("http://www.nfl.com/liveupdate/scorestrip/ss.xml","//g/@eid" )
这是我用过的字段之一,2017年还在拉。谢谢!
看起来 XML 服务已停止或不太容易找到。
不过,我相信这个网站是 JSON 的等价网站。
http://www.nfl.com/liveupdate/scores/scores.json
并且该网站还提供实时数据,您可以按日期选择。
http://www.nfl.com/liveupdate/game-center/2018090600/2018090600_gtd.json
在查看第一个 link 的输出后,您似乎可以从中获取正在进行的比赛和安排的比赛,然后使用对 select 特定比赛的参考第二个 link 中的完整游戏细节。
下面是一个函数,您可以使用 http://www.nfl.com/liveupdate/scores/scores.json 将结果输入 Google-sheets 并显示 selected 字段。
要安装和使用它,请阅读此处的说明: https://developers.google.com/apps-script/guides/sheets/functions#using_a_custom_function
在您的 sheet 中选择一个单元格并输入 = ReadNFLResults()
定期(比如每 2 分钟)运行 脚本,按照这些说明进行操作 https://www.quora.com/How-can-I-periodically-run-a-Google-Script-on-a-Spreadsheet
/** Imports NFL results to your spreadsheet Ex: ReadNFLResults()
* @customfunction
*/
function ReadNFLResults(){
try{
var res = UrlFetchApp.fetch("http://www.nfl.com/liveupdate/scores/scores.json");
var content = res.getContentText();
var json = JSON.parse(content);
// Extracts the keys (these change every week)
var keys = [];
for(var k in json) keys.push(k);
// Declare array for results
var NFLResults =[];
// Make a Title Row
NFLResults.push(["Date","Stadium","Time","Qtr","Home Team","Hs1","Hs2","Hs3","Hs4","HsT","Vis Team","As1","As2","As3","As4","AsT"]);
// Extracts the Games one per line
for(n=0; n<keys.length; n++){
var Date = ""+keys[n];
var Stadium = json[keys[n]]["stadium"];
var Clock = json[keys[n]]["clock"];
var TV = json[keys[n]]["media"]["tv"];
var Qtr = json[keys[n]]["qtr"];
var Home = json[keys[n]]["home"]["abbr"];
var Hs1 = json[keys[n]]["home"]["score"]["1"];
var Hs2 = json[keys[n]]["home"]["score"]["2"];
var Hs3 = json[keys[n]]["home"]["score"]["3"];
var Hs4 = json[keys[n]]["home"]["score"]["4"];
var HsT = json[keys[n]]["home"]["score"]["T"];
var Away = json[keys[n]]["away"]["abbr"];
var As1 = json[keys[n]]["away"]["score"]["1"];
var As2 = json[keys[n]]["away"]["score"]["2"];
var As3 = json[keys[n]]["away"]["score"]["3"];
var As4 = json[keys[n]]["away"]["score"]["4"];
var AsT = json[keys[n]]["away"]["score"]["T"];
NFLResults.push([Date,Stadium,Clock,Qtr,Home,Hs1,Hs2,Hs3,Hs4,HsT,Away,As1,As2,As3,As4,AsT]);
}
// Return array to Google-Sheets
return (NFLResults);
}
catch(err){
return "Error getting data";
}
}
以下是截至 2018 年 9 月 10 日的示例结果:
试试这个:
http://www.nfl.com/ajax/scorestrip?season=2018&seasonType=REG&week=1
看起来您必须为季节、类型和周指定查询字符串参数,但看起来输出可能是相同的。
这是我的脚本。它运作良好。不要忘记将脚本触发器设置为每分钟或您希望的频率自动 运行。
function GetNFLScore(){
var url = ('http://www.nfl.com/liveupdate/scores/scores.json');
var res = UrlFetchApp.fetch(url);
var content = res.getContentText();
var json = JSON.parse(content);
var bye = "";
// Extracts the keys (these change every week)
var keys = [];
for(var k in json) keys.push(k);
// Declare array for results
var NFLResults =[];
// Make a Title Row
NFLResults.push(["Qtr","Time","Home","Pts","Away","Pts","Pos.","Down","To Go","Yard Line","Note","Network"]);
// Extracts the Games one per line
for(n=0; n<keys.length; n++) {
var Clock = json[keys[n]]["clock"]; // Kickoff time if pregame, Game Clock if game time
var Qtr = json[keys[n]]["qtr"]; // Gamestate (Pre, or Final), Game quater if game time
var Home = json[keys[n]]["home"]["abbr"]; // Home Team
var HsT = json[keys[n]]["home"]["score"]["T"]; // Home Total Score
var Away = json[keys[n]]["away"]["abbr"]; // Away Team
var AsT = json[keys[n]]["away"]["score"]["T"]; // Away Total Score
var TV = json[keys[n]]["media"]["tv"]; // TV Network (NBC, FOX, ESPN, ect..)
var YardLine = json[keys[n]]["yl"]; // Current scrimage yard line
var PosTeam = json[keys[n]]["posteam"]; // Team with ball possession
var RedZone = json[keys[n]]["redzone"]; // Redzone boolean
var Down = json[keys[n]]["down"]; // Current Down
var ToGo = json[keys[n]]["togo"]; // Current To Go yardage for 1st down
var Note = json[keys[n]]["note"]; // Scoring play (Touchdown, Field Goal, Extra Point, Safety)
// Correcting team abbr
if( Home == "JAC" ){ Home = "JAX";} // JAC > JAX
else if( Home == "WAS" ){ Home = "WSH";} // WAS > WSH
else if( Home == "LA" ){ Home = "LAR";} // LA > LAR
if( Away == "LA" ){ Away = "LAR";}
else if( Away == "WAS" ){ Away = "WSH";}
else if( Away == "JAC" ){ Away = "JAC";}
// Clear non-score related game data if game is final
if( Qtr == "Final" ){
Clock = "";
PosTeam = "";
RedZone = "";
Down = "";
ToGo = "";
Note = "";
TV = "";
}
else if( Qtr == "Final OT" ){
Clock = "";
PosTeam = "";
RedZone = "";
Down = "";
ToGo = "";
Note = "";
TV = "";
}
// Display Game data
NFLResults.push([Qtr,Clock,Home,HsT,Away,AsT,PosTeam,Down,ToGo,YardLine,Note,TV]);
}
// Clear the bottom of the scoreboard from lack of scores caused by bye weeks
var rows = NFLResults.length
for(n=0; n<(17-rows); n++) {
NFLResults.push([bye,bye,bye,bye,bye,bye,bye,bye,bye,bye,bye,bye]); // N'SYNC
}
// Create new tab 'NFL Scores' if it doesn't exist.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var itt = ss.getSheetByName('NFL Scores');
if (!itt) {
ss.insertSheet('NFL Scores');
}
// Push Scoreboard to spreadsheet
SpreadsheetApp.getActive().getSheetByName('NFL Scores').getRange(1,1,17,12).setValues(NFLResults);
}