我有一个shell脚本,用于拉动游戏网站上列出的玩家数量。我拿了这个号码并添加了一个时间戳并把它放在谷歌电子表格上,这样我就可以随着时间的推移制作一张图表来跟踪数据。唯一的问题是运行它,我需要保持我的电脑,我猜你可以使用某种类型的谷歌脚本,但我不知道如何开始这样做。
我使用的shell脚本是:
wget --output-document=- http://runescape.com/title.ws 2>/dev/null \
| grep PlayerCount \
| head -1l \
| sed 's/^[^>]*>//' \
| sed "s/currently.*$/$(date '+%m\/%d\/%Y %H:%M:%S')/" \
| cut -d">" -f 3,4 \
| sed 's/<\/span>//' \
| sed 's/,//' \
| awk '{printf "%s %s,%s,%s\n", $3, $4, $1, $2}'
输出示例:11/21/2012 01:02:22,52833,people
我想要的是让它自动拉动该数字并将其每2分钟存储在一个单元格上。但我不确定它是多么容易或从哪里开始。
然后它看起来像http://i.imgur.com/xRpNy.png
答案 0 :(得分:4)
如果你这样做可能会达到配额限制。但这就是我要做的。
function pullRuneScape() {
var page = UrlFetchApp.fetch('http://runescape.com/title.ws').getContentText();
var number = page.match(/PlayerCount.*>([0-9,]+)</)[1];
SpreadsheetApp.getActive().getSheetByName('Sheet1').appendRow([new Date(), number]);
}
打开Google电子表格,然后点击菜单工具&gt;脚本编辑器,粘贴上面的代码并保存。仍然在脚本编辑器上,单击“资源”&gt;当前脚本的触发器。然后将此功能设置为在时间驱动的触发器上运行。
答案 1 :(得分:1)
您可以在Apps脚本中使用UrlFetch App来获取页面内容,并且可以使用正则表达式解析该内容以获取玩家数量。 这是我尝试过的一些代码。它使用YQL和Apps脚本来避免正则表达式解析。
function retreiveOnlineUsers(){
var query = 'select * from html where url="http://runescape.com/title.ws" and xpath=\'//div[@id="PlayerCount"]/p[1]/span\'&format=json';
var yql = 'http://query.yahooapis.com/v1/public/yql?q=';
var queryURL = yql+encodeURI(query);
var jsonString = UrlFetchApp.fetch(queryURL).getContentText();
var json = Utilities.jsonParse(jsonString);
var palyerCount = json.query.results.span;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
l = sheet.getLastRow();
sheet.getRange(l+1, 1, 1, 3).setValues([[new Date(), palyerCount, 'people']]);
}
参考文献:
此脚本已经过测试且运行正常。以下是使其与电子表格配合使用的步骤。