6

我有一个包含 245 个国家/地区的国家/地区列表

有什么方法可以在 Google 表格中使用 VLOOKUP 来导入它们各自的标志?

我正在考虑可能使用 Wiki 或http://www.theodora.com/flags/等资源,但不确定是否可以?

4

2 回答 2

9

步骤 1. 获取链接

A1 =http://www.sciencekids.co.nz/pictures/flags.html

B1 =//@src[contains(.,'flags96')]

A3 ==IMPORTXML(A1,B1)

第2步。使用图像功能

B3 ==IMAGE(substitute(A3,"..","http://www.sciencekids.co.nz"))

奖金。国家的名字:

C1 =([^/.]+)\.jpg$

C3 ==REGEXEXTRACT(A3,C1)

在此处输入图像描述

于 2017-08-02T14:54:18.883 回答
0

更新:

在写完这篇文章并进行了一些好奇的谷歌搜索之后,我发现了以下 API:

这让我可以创建这个单行公式:

=IMAGE(CONCATENATE("https://www.countryflags.io/", REGEXEXTRACT(INDEX(IMPORTDATA(CONCAT("https://restcountries.eu/rest/v2/name/", F3)), 1, 3),"""(\w{2})"""), "/flat/64.png"))

(如果有人知道在 Google 表格中导入和解析 json 的更好方法 - 请告诉我)

由于这些是官方 API 而不是“sciencekids.co.nz”,因此理论上它会提供以下好处:

  • 使用专门构建的 API 比使用一些随机网站更“合适”
  • 也许更“未来证明”
    • 可用性:将来更有可能可用
    • 更新/维护:更有可能更新以包括新国家/更新标志

但是,很大的缺点:它似乎仅限于 64px 宽的图像(即使最初发布的“sciencekids”解决方案也提供了 96px 宽的图像)。因此,如果您想要更高质量的图像,您可以将原始公式调整为:

=IMAGE(SUBSTITUTE(SUBSTITUTE(QUERY(IMPORTXML("http://www.sciencekids.co.nz/pictures/flags.html","//@src[contains(.,'flags96')]"),CONCATENATE("SELECT Col1 WHERE Col1 CONTAINS '/", SUBSTITUTE(SUBSTITUTE(A1, " ", "_"), "&", "and") ,".jpg'")),"..","http://www.sciencekids.co.nz"), "flags96", "flags680"))

它在“sciencekids.co.nz”网站上提供 680 像素宽的图像。(如果有人找到提供更高质量图像的 API,请告诉我。那里肯定有)

原帖:

为了补充 Max 的精彩答案,这是一个函数中的全部内容:

=IMAGE(SUBSTITUTE(QUERY(IMPORTXML("http://www.sciencekids.co.nz/pictures/flags.html","//@src[contains(.,'flags96')]"),CONCATENATE("SELECT Col1 WHERE Col1 CONTAINS '/", SUBSTITUTE(SUBSTITUTE(A1, " ", "_"), "&", "and") ,".jpg'")),"..","http://www.sciencekids.co.nz"))

(如果有人想简化一点,请成为我的客人)

把它放在 A2 中,然后在 A1 中输入一个国家名称(例如“土耳其”或“波斯尼亚和黑塞哥维那”),它会显示一个用于“搜索”的标志

于 2021-06-29T21:01:17.327 回答