Вот мой скрипт Google Code.gs:
/* Reddit Scraper written by Amit Agarwal */
var REDDIT = "HomeImprovement";
function run() {
deleteTriggers_();
/* Fetch Reddit posts every 5 minutes to avoid hitting
the reddit and Google Script quotas */
ScriptApp.newTrigger("scrapReddit")
.timeBased().everyMinutes(5).create();
}
function scrapReddit() {
// Process 20 Reddit posts in a batch
var url = "http://www.reddit.com/r/"
+ REDDIT + "/new.xml?limit=100" + getLastID_();
// Reddit API returns the results in XML format
var response = UrlFetchApp.fetch(url).getContentText();
var doc = XmlService.parse(response);
var root = doc.getRootElement();
var entries = root.getChildren("feed")[0].getChildren("entry");
var data = new Array();
for (var i=0; i<entries.length; i++) {
/* Extract post date, title, description and link from Reddit */
var date = entries[i].getChild('updated').getText();
var title = entries[i].getChild('title').getText();
var desc = entries[i].getChild('content').getText();
var link = entries[i].getChild('link').getText();
data[i] = new Array(date, title, desc, link);
}
if (data.length == 0) {
/* There's no data so stop the background trigger */
deleteTriggers_();
} else {
writeData_(data);
}
}
/* Write the scrapped data in a batch to the
Google Spreadsheet since this is more efficient */
function writeData_(data) {
if (data.length === 0) {
return;
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var row = sheet.getLastRow();
var col = sheet.getLastColumn();
var range = sheet.getRange(row+1, 1, data.length, 4);
try {
range.setValues(data);
} catch (e) {
Logger.log(e.toString());
}
}
/* Use the ID of the last processed post from Reddit as token */
function getLastID_() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var row = sheet.getLastRow();
var col = sheet.getLastColumn();
var url = sheet.getRange(row, col).getValue().toString();
var pattern = /.*comments\/([^\/]*).*/;
var id = url.match(pattern);
return id ? "&after=t3_" + id[1] : "";
}
/* Posts Extracted, Delete the Triggers */
function deleteTriggers_() {
var triggers = ScriptApp.getProjectTriggers();
for (var i=0; i<triggers.length; i++) {
ScriptApp.deleteTrigger(triggers[i]);
}
}
Это ошибка, возникающая при запуске скрипта:
TypeError: невозможно прочитать свойство getChildren неопределенного значения (строка 29, код файла)
Вот фид URL: https://www.reddit.com/r/HomeImprovement/new.xml?limit=100
Любая помощь?
Спасибо
больше текста больше текста больше текста больше текста больше текста