在Google表格上使用IfError导入ImportXLM

罗伯特·布鲁克斯

我要感谢每个人在此站点上提供的帮助-这非常重要!

我正在尝试将点赞/关注者从Spotify播放列表导入Google表格。似乎各种播放列表都有不同的XPath。

我可以使用以下代码提取喜欢/关注者的大多数(大部分工作):( B24是网址)

= INDEX(REGEXEXTRACT(IFERROR(QUERY(ARRAY_CONSTRAIN(IMPORTDATA(B24),500,5),“选择Col5,其中Col4包含“跟随者””),0),QUERY(ARRAY_CONSTRAIN(IMPORTDATA(B24),500,7),”选择Col7,其中Col6包含“关注者”,0)),“ \ d +”)* 1)

但是,某些播放列表链接的输出为空。示例:https : //open.spotify.com/playlist/5aSO2lT7sVPKut6F9L6IAc工作示例:https : //open.spotify.com/playlist/7qvQVDnLe4asawpZqYhKMQ

老实说,我不确定如何添加第三个参数,并且我一直在盲目地更改列号以查看有效的方法-运气不好。关于如何找出要更改的行号/任何指南的任何想法都将非常有帮助。

谢谢!!

Tanaike

问题和解决方法:

当我从两个URL中看到HTML时,我认为在这种情况下,可以从HTML中包含的JSON数据中检索要检索的值。但不幸的是,JSON数据很大。因此,当IMPORTXML使用时,由于数据大小会发生错误。因此,在这个答案中,我想建议使用通过Google Apps脚本使用的自定义函数。

示例脚本:

请复制以下Google Apps脚本并将其粘贴到Google Spreadsheet的脚本编辑器中。并且,请放在=SAMPLE("###url###")牢房中。由此,followers返回的值

function SAMPLE(url) {
  const res = UrlFetchApp.fetch(url).getContentText();
  const v = res.replace(/&/g, "&").match(/Spotify\.Entity \=([\s\S\w]+?);/);
  return v && v.length == 2 ? JSON.parse(v[1].trim()).followers.total : "Value cannot be retrieved.";
}

结果:

当上述脚本用于您的2个URL时,可获得以下结果。在这种情况下,以下自定义公式分别放入单元格“ A1”和“ A2”。

=SAMPLE("https://open.spotify.com/playlist/5aSO2lT7sVPKut6F9L6IAc")

=SAMPLE("https://open.spotify.com/playlist/7qvQVDnLe4asawpZqYhKMQ")

在此处输入图片说明

笔记:

  • 该示例脚本适用于您问题中的URL。因此,当您针对其他URL测试它时,该脚本可能无法使用。并且,当在服务器端更改HTML的结构时,该脚本可能无法使用。所以请注意这一点。

参考:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章