如何将IP地址转换为国家/地区名称

时间:2014-06-23 11:24:05

标签: google-sheets jotform

URl - https://docs.google.com/spreadsheets/d/1lvmwHqINzKxjKgZjmDAkntFDo2R_lrfy2GUd-ohCA2A/edit#gid=1237083423

如您所见,有一列显示IP地址。 基本上它是一个调查表(JotForm),其响应在Google电子表格上实时更新。

根据可用的IP地址,如何找到其各自的国家/地区名称。

我有一个解决方案

=query( importhtml("http://whatismyipaddress.com/ip/" & G4, "table", 2), "select Col2 where Col1 = 'Country:' ", 0 )

但在这方面,我面临一个问题。我正在使用jotforms并将其与Google Spreadsheets集成。它给出了我到目前为止收到的所有回复的位置。我使用了向下拖动功能并将其拖到100号单元格。收到新响应后,信息现在存储在101号单元格中,而我输入公式的所有其他信息都留空。

对此有何解决方法?任何数组公式都可以吗?

还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

你的配方似乎运作良好。不幸的是,我还没有找到一种更简单的方法来使用arrayformula()。但是关于如何自动神奇地进行此更新的问题是非常可行的。以下将假设您已将公式放在单元格G2中。 (您可能会发现您也希望在其他地方使用它,在这种情况下,您只需创建不同的函数以使其工作并将它们放在onChange()中)。

  1. 打开脚本编辑器。工具 - >脚本编辑器

  2. 将以下代码添加到脚本编辑器的末尾:

    function updateCountry(){
      var mysheet = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = mysheet.getSheetByName("Submissions");  //Sheet Name is "Submissions"
      var sourceCell = sheet.getRange(2,7,1,1); //Row 2, Column G, First Row in G, 1      Column in Range
      var targetRows = sheet.getRange(3,7,sheet.getLastRow()-2, 1); //Row 3, Column G, Last row currently populated, 1 Column in Range
      sourceCell.copyTo(targetRows); //Will copy the formula from sourceCell to targetRows.
    
    }
    
    function onChange(){
      updateCountry(); //Run this on every change.
    }
    
  3. 将编辑过的脚本文件另存为“CCI响应”。

  4. 现在在脚本编辑器中转到Resources-> Current Projects Triggers。使用下拉菜单生成以下设置并保存:Triggers

  5. 现在看看将新IP添加到G列后会发生什么。