Alb*_*toA 4 google-sheets google-sheets-importxml
我在 Google 电子表格上使用 ImportXML 来抓取 YouTube 搜索结果并捕获我正在跟踪的视频的排名。
=IMPORTXML("https://www.youtube.com/results?search_query=control+theory&page=1"),"//div[@class='yt-lockup-byline']//a")
Run Code Online (Sandbox Code Playgroud)
抓取效果很好(我得到了第一页的所有结果)。然后我查找 YouTube 结果的位置并将其保存在一个单元格中。
但是,我遇到的问题是当我尝试跟踪该排名的时间。不确定如何执行此操作,但我正在寻找一种=ImportXML每天运行该函数的方法(是否有刷新命令?),并在每次运行该函数时将该单元格的结果保存在新行中。
有任何想法吗?
小智 6
importXML输出会自动更新(大约每两个小时),但您仍然需要一个脚本来将过去的值保存在某处:通常,在另一张纸上。使用工具 > 脚本编辑器输入以下内容,调整工作表名称和具有感兴趣值的单元格。使用资源 > 当前项目的触发器将其设置为每天或每周运行。
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]]);
}
Run Code Online (Sandbox Code Playgroud)
每次运行时,脚本都会在 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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2088 次 |
| 最近记录: |