Tanaike 使用 Cheerio 幫助我完成了這個驚人的腳本。原件是為 Letterboxd 設計的,但這個是從 Trakt.tv 中提取的一個監視串列(示例監視串列)。
就像現在一樣,它會提取觀看日期和標題,但我還想從每個專案的元標記中提取內容。
<meta content="8 Million Ways to Die (1986)" itemprop="name">
我嘗試使用$('[itemprop="name"]').attr('content');,但它不接受 .attr 片段。
這是現在的完整腳本,在 Col1 中回傳觀看日期,在 Col2 中回傳標題。
/**
* Returns Trakt watchlist by username
* @param pages enter the number of pages in the list. Default is 10
* @customfunction
*/
function TRAKT(pages=10) {
const username = `jerrylaslow`
const maxPage = pages;
const reqs = [...Array(maxPage)].map((_, i) => ({ url: `https://trakt.tv/users/` username `/history/all/added?page=${i 1}`, muteHttpExceptions: true }));
return UrlFetchApp.fetchAll(reqs).flatMap((r, i) => {
if (r.getResponseCode() != 200) {
return [["Values couldn't be retrieved.", reqs[i].url]];
}
const $ = Cheerio.load(r.getContentText());
const ar = $(`a.titles-link > h3.ellipsify, h4 > span.format-date`).toArray();
return [...Array(Math.ceil(ar.length / 2))].map((_) => {
const temp = ar.splice(0, 2);
const watchDate = Utilities.formatDate(new Date($(temp[1]).text().trim().replace(/T|Z/g, " ")),"GMT","yyyy-MM-dd");
const title = $(temp[0]).text().trim();
return [watchDate,title];
});
});
}
這些值可以用這個來拉,所以我知道沒有任何形式的阻塞在起作用。
=IMPORTXML(
"https://trakt.tv/users/jerrylaslow/history",
"//meta[@itemprop='name']/@content")
任何幫助表示贊賞。
uj5u.com熱心網友回復:
為了達到你的目的,在你的腳本中,下面的修改怎么樣?
修改后的腳本:
function TRAKT(pages = 10) {
const username = `jerrylaslow`
const maxPage = pages;
const reqs = [...Array(maxPage)].map((_, i) => ({ url: `https://trakt.tv/users/` username `/history/all/added?page=${i 1}`, muteHttpExceptions: true }));
return UrlFetchApp.fetchAll(reqs).flatMap((r, i) => {
if (r.getResponseCode() != 200) {
return [["Values couldn't be retrieved.", reqs[i].url]];
}
const $ = Cheerio.load(r.getContentText());
const ar = $(`a.titles-link > h3.ellipsify, h4 > span.format-date`).toArray();
return [...Array(Math.ceil(ar.length / 2))].map((_) => {
const temp = ar.splice(0, 2);
const c = $(temp[0]).parent('a').parent('div').parent('div').find('meta').toArray().find(ff => $(ff).attr("itemprop") == "name"); // Added
const watchDate = Utilities.formatDate(new Date($(temp[1]).text().trim().replace(/T|Z/g, " ")), "GMT", "yyyy-MM-dd");
const title = $(temp[0]).text().trim();
return [watchDate, title, c ? $(c).attr("content") : ""]; // Modified
});
});
}
- 運行此修改后的腳本時,將 的值
content放入第 3 列。如果要放到其他列,請修改return [watchDate, title, c ? $(c).attr("content") : ""];.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/494435.html
標籤:谷歌应用脚本
