我需要使用 Google Apps 腳本決議 Google 警報 RSS 提要。 Google 快訊 RSS-Feed
我找到了一個可以完成這項作業的腳本,但我無法讓它與 Google 的 RSS Feed 一起使用:
提要如下所示:
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:idx="urn:atom-extension:indexing">
<id>tag:google.com,2005:reader/user/06807031914929345698/state/com.google/alerts/10604166159629661594</id>
<title>Google Alert – garbe industrial real estate</title>
<link href="https://www.google.com/alerts/feeds/06807031914929345698/10604166159629661594" rel="self"/>
<updated>2022-03-17T19:34:28Z</updated>
<entry>
<id>tag:google.com,2013:googlealerts/feed:10523743457612307958</id>
<title type="html"><b>Garbe Industrial</b> plant Multi-User-Immobilie in Ludwigsfelde - <b>Property</b> Magazine</title>
<link href="https://www.google.com/url?rct=j&sa=t&url=https://www.property-magazine.de/garbe-industrial-plant-multi-user-immobilie-in-ludwigsfelde-117551.html&ct=ga&cd=CAIyGWRmNjU0ZGNkMzJiZTRkOWY6ZGU6ZGU6REU&usg=AFQjCNENveXYlfrPc7pZTltgXY8lEAPe4A"/>
<published>2022-03-17T19:34:28Z</published>
<updated>2022-03-17T19:34:28Z</updated>
<content type="html">Die <b>Garbe Industrial Real Estate</b> GmbH startet ihr drittes Neubauprojekt in der Metropolregion Berlin/Brandenburg. Der Projektentwickler hat sich ...</content>
<author>
...
</feed>
我想提取條目-> id、標題、鏈接、更新、內容。
我使用了這個腳本:
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 item = xml.getRootElement().getChildren("entry")[n - 1].getChildren();
var values = item.reduce(function(obj, e) {
obj[e.getName()] = e.getValue();
return obj;
}, {});
return [[values.id, values.title, values.link, values.updated, values.content]];
}
我修改了這部分,但我得到的只是“TypeError:無法讀取未定義的屬性'getChildren'”
//var item = xml.getRootElement().getChild("channel").getChildren("item")[n - 1].getChildren();
var item = xml.getRootElement().getChildren("entry")[n - 1].getChildren();
歡迎任何想法!
uj5u.com熱心網友回復:
在您的情況下,以下修改后的腳本怎么樣?
修改后的腳本:
function SAMPLE(url, n = 1) {
var res = UrlFetchApp.fetch(url).getContentText();
var root = XmlService.parse(res.replace(/&/g, "&")).getRootElement();
var ns = root.getNamespace();
var entries = root.getChildren("entry", ns);
if (!entries || entries.length == 0) return "No values";
var header = ["id", "title", "link", "updated", "content"];
var values = header.map(f => f == "link" ? entries[n - 1].getChild(f, ns).getAttribute("href").getValue().trim() : entries[n - 1].getChild(f, ns).getValue().trim());
return [values];
}
在這種情況下,當您使用
getChildand時getChildren,請使用名稱空間。我認為這可能是您的問題的原因。從您的腳本中,我猜您可能會將您的腳本用作自定義函式。在這種情況下,請將函式名稱從修改
ImportFeed為其他,因為IMPORTFEED它是 Google 電子表格的內置函式。在此示例中,SAMPLE使用了。如果要更改列,請修改
header.n在此示例中,默認值為1。在這種情況下,檢索第一個條目。例如,在此腳本中,您可以將
=SAMPLE("URL", 1)一個單元格作為自定義函式。由此,回傳結果值。
筆記:
如果上述修改的腳本不是您問題的直接解決方案,您能否提供 的示例值
res?通過這個,我想修改腳本。作為附加資訊,當您想通過使用腳本編輯器執行腳本來放置所有值時,您還可以使用以下腳本。
function myFunction() { var url = "###"; // Please set URL. var res = UrlFetchApp.fetch(url).getContentText(); var root = XmlService.parse(res.replace(/&/g, "&")).getRootElement(); var ns = root.getNamespace(); var entries = root.getChildren("entry", ns); if (!entries || entries.length == 0) return "No values"; var header = ["id", "title", "link", "updated", "content"]; var values = entries.map(e => header.map(f => f == "link" ? e.getChild(f, ns).getAttribute("href").getValue().trim() : e.getChild(f, ns).getValue().trim())); var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); // Please set the sheet name. sheet.getRange(sheet.getLastRow() 1, 1, values.length, values[0].length).setValues(values); }
參考:
- XML 服務
- 地圖()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446031.html
上一篇:決議硒,滾動的問題
