使用 Google 个电子表格导入 XML 并随时间保存结果
ImportXML using Google Spreadsheets and Save Results Over-Time
我在 Google 电子表格上使用 ImportXML 来抓取 YouTube 搜索结果并捕获我正在跟踪的视频的排名。
=IMPORTXML("https://www.youtube.com/results?search_query=control+theory&page=1"),"//div[@class='yt-lockup-byline']//a")
抓取效果很好(我得到了第一页的所有结果)。然后我查找 YouTube 结果的位置并将其保存在一个单元格中。
但是,我遇到的问题是当我试图跟踪该排名时随着时间的推移。不知道该怎么做,但我正在寻找一种方法来每天 运行 =ImportXML
函数(是否有刷新命令?)并每次将该单元格的结果保存在新行中函数是 运行。
有什么想法吗?
importXML
输出会自动更新(大约每两个小时一次),但您仍然需要一个脚本将过去的值保存在某处:通常,在另一个 sheet 上。使用工具 > 脚本编辑器输入以下内容,调整 sheet 名称和具有感兴趣值的单元格。使用 Resources > Current project's triggers 将其设置为每天或每周 运行。
function storeValue() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1'); // where importXML is
var value = sheet.getRange("B3").getValue(); // where the cell of interest is
var sheet2 = ss.getSheetByName('Sheet2'); // where to store the data
var height = sheet2.getLastRow();
sheet2.insertRowAfter(height);
sheet2.getRange(height+1, 1, 1, 2).setValues([[new Date(), value]]);
}
在每个 运行,脚本在 Sheet2 的底部附加两个单元格:一个带有时间戳(格式应如此),一个带有与该时间戳对应的值。
用于存储一系列值的版本,例如 B3:B7:
function storeValue() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1');
var values = sheet.getRange("B3:B7").getValues()[0];
var sheet2 = ss.getSheetByName('Sheet2'); // where to store the data
var height = sheet2.getLastRow();
sheet2.insertRowAfter(height);
sheet2.getRange(height+1, 1, 1, 6).setValues([[new Date()].concat(values)]);
// setting 6 cells instead of 2 on the previous line
}
我在 Google 电子表格上使用 ImportXML 来抓取 YouTube 搜索结果并捕获我正在跟踪的视频的排名。
=IMPORTXML("https://www.youtube.com/results?search_query=control+theory&page=1"),"//div[@class='yt-lockup-byline']//a")
抓取效果很好(我得到了第一页的所有结果)。然后我查找 YouTube 结果的位置并将其保存在一个单元格中。
但是,我遇到的问题是当我试图跟踪该排名时随着时间的推移。不知道该怎么做,但我正在寻找一种方法来每天 运行 =ImportXML
函数(是否有刷新命令?)并每次将该单元格的结果保存在新行中函数是 运行。
有什么想法吗?
importXML
输出会自动更新(大约每两个小时一次),但您仍然需要一个脚本将过去的值保存在某处:通常,在另一个 sheet 上。使用工具 > 脚本编辑器输入以下内容,调整 sheet 名称和具有感兴趣值的单元格。使用 Resources > Current project's triggers 将其设置为每天或每周 运行。
function storeValue() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1'); // where importXML is
var value = sheet.getRange("B3").getValue(); // where the cell of interest is
var sheet2 = ss.getSheetByName('Sheet2'); // where to store the data
var height = sheet2.getLastRow();
sheet2.insertRowAfter(height);
sheet2.getRange(height+1, 1, 1, 2).setValues([[new Date(), value]]);
}
在每个 运行,脚本在 Sheet2 的底部附加两个单元格:一个带有时间戳(格式应如此),一个带有与该时间戳对应的值。
用于存储一系列值的版本,例如 B3:B7:
function storeValue() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1');
var values = sheet.getRange("B3:B7").getValues()[0];
var sheet2 = ss.getSheetByName('Sheet2'); // where to store the data
var height = sheet2.getLastRow();
sheet2.insertRowAfter(height);
sheet2.getRange(height+1, 1, 1, 6).setValues([[new Date()].concat(values)]);
// setting 6 cells instead of 2 on the previous line
}