我将Google表格用作“中间人”,以从RSS Feed中获取并保存值。使用= ImportFeed,当打开工作表时,来自RSS feed的值将在工作表中更新。这会将值插入到单元格A1:E1中。
sheet1, cell A1 contains:
=ImportFeed("http://lorem-rss.herokuapp.com/feed", "items" , FALSE, 1)
但是在我的设置中,不会有用户主动打开工作表。而是我需要此功能在计时器上运行,例如每隔一小时。我在工作表的脚本编辑器中尝试了以下操作,但当然不会运行。
function fetchRSS() {
var response =
ImportFeed("https://www.nasa.gov/rss/dyn/breaking_news.rss", "items" , FALSE, 1);
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1,1).setValue([response]);
}
理想情况下,可以使用everyHours(n)或通过UI Trigger方法调用上述函数。
答案 0 :(得分:1)
=IMPORTFEED("https://www.nasa.gov/rss/dyn/breaking_news.rss", "items" , FALSE, 1)
。如果我对您的问题的理解是正确的,那么该修改如何?
ImportFeed()
方法。
=IMPORTFEED()
,我使用了以下流程。
https://www.nasa.gov/rss/dyn/breaking_news.rss
从UrlFetchApp.fetch()
检索值。XmlService.parse()
解析检索到的值。使用此脚本时,请将以下脚本复制并粘贴到脚本编辑器中,然后运行fetchRSS()
。
// In the case of this function, if "n" is 1, the 1st item is retrieved.
function ImportFeed(url, n) {
var res = UrlFetchApp.fetch(url).getContentText();
var xml = XmlService.parse(res);
var item = xml.getRootElement().getChild("channel").getChildren("item")[n - 1].getChildren();
var values = item.reduce(function(obj, e) {
obj[e.getName()] = e.getValue();
return obj;
}, {});
return [[values.title, values.link, values.pubDate, values.description]];
}
// Please run this function.
function fetchRSS() {
var response = ImportFeed("https://www.nasa.gov/rss/dyn/breaking_news.rss", 1);
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(sheet.getLastRow() + 1, 1, response.length, response[0].length).setValues(response);
}
fetchRSS()
时,这些值将写入电子表格第一张纸的最后一行。如果要将值放入电子表格中的特定工作表,请从var sheet = SpreadsheetApp.getActiveSheet()
修改为var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name)
。https://www.nasa.gov/rss/dyn/breaking_news.rss
时,需要修改ImportFeed()
。 / li>
如果我误解了您的问题,请告诉我。我想修改它。