2

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

ご覧のとおり、IP アドレスを表示する列があります。基本的には、回答が Google スプレッドシート上でリアルタイムに更新される調査フォーム (JotForm) です。

利用可能なIPアドレスに基づいて、それぞれの国名を見つけるにはどうすればよいですか.

私は1つの解決策を得ました

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

しかし、これで私は1つの問題に直面しています。私は jotforms を使用しており、それを Google スプレッドシートと統合しています。これまでに受け取ったすべての応答の場所がわかります。ドラッグ ダウン機能を使用してセル 100 番にドラッグしました。新しい応答が受信されるとすぐに、情報がセル 101 番に保存され、数式を入力した他のすべての場所は空白のままになります。

これに対する回避策はありますか?どんな配列式でもいいですか?

それを行う他の方法はありますか?

4

1 に答える 1

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 Responses」として保存します。

  4. スクリプト エディタ内で、Resources->Current Projects Triggers に移動します。プルダウンを使用して次の設定を作成し、保存します。トリガー

  5. 新しい IP が列 G に追加されるとどうなるかを見てみましょう。

于 2014-06-24T13:14:02.947 に答える