2017-05-26 16 views
-4

スクリプトを使用して結果を照合するためのダイアログボックスでボタンを作成したいと考えています。例えば、私は米国を東、中、西に分けました。私は米国50州の名前と略語と呼ばれるテキストファイルを持っています。 。私は、「NY」やボストンを入力するとどのように私はGoogleのSpreadsheet.Thanksでこれを達成することができ、 『東」、結果が表示されるでしょう』Googleスクリプトを使用して配列を検索して一致させる

+0

こんにちは、このコードを入力しましたが、検索する場所はありません。どこで検索できますか?つまり、このスクリプトを呼び出すためのボタンを追加する必要がありますか? – HelloWorld

答えて

1

これは、スクリプトファイルです。これはhtmlです

function findSection(state) 
{ 
    var state =(typeof(state) != 'undefined')?state: ''; 
    var found = "No Data Provided"; 
    if(state) 
    { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sht = ss.getSheetByName('StateSearch'); 
    var rng = sht.getDataRange(); 
    var rngA = rng.getValues(); 
    found ='Not Found'; 
    for(var i=1;i<rngA.length;i++) 
    { 
     if((state==rngA[i][0]) || (state == rngA[i][1])) 
     { 
     found = rngA[i][2]; 
     break; 
     } 
    } 
    } 
    return found; 
} 

function searchSideBar() 
{ 
    var ui = HtmlService.createHtmlOutputFromFile('sectionSearchDialog').setTitle('State Search'); 
    SpreadsheetApp.getUi().showSidebar(ui); 
} 

サイドバー用のファイル: あなたがここに状態データを置くことができますし、必要に応じて3列目に、あなたのセクション名を追加することができます。

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    </head> 
    <body> 
    State:<input type="text" id="txt1" size="30" value=""/><br /> 
    Section:<input type="text" id="txt2" size="30" value=""/><br /> 
    Search:<input type="button" value="Search" onClick="sectionSearch();" /> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script> 
     console.log('here'); 
     function sectionSearch() 
     { 
     var v = $('#txt1').val(); 
     google.script.run 
      .withSuccessHandler(updateSection) 
      .findSection(v); 
     } 
     function updateSection(v) 
     { 
     $('#txt2').val(v); 
     } 
    </script> 
    </body> 
</html> 

これは、スプレッドシート「StateSearch」のように見えるものです都市を追加することは、読者の特別な練習として残されています。がんばろう。

enter image description here

ジオ場所ずにいくつかの都市を追加する簡単な方法は、この方法かもしれない:

同じサイドバーコード: このスクリプトファイル:

function findSection(state) 
{ 
    var state =(typeof(state) != 'undefined')?state: ''; 
    var found = "No Data Provided"; 
    if(state) 
    { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sht = ss.getSheetByName('StateSearch'); 
    var rng = sht.getDataRange(); 
    var rngA = rng.getValues(); 
    found ='Not Found'; 
    for(var i=1;i<rngA.length;i++) 
    { 
     if((state==rngA[i][0]) || (state == rngA[i][1]) || (isACity(state,rngA[i][3])>-1)) 
     { 
     found = rngA[i][2]; 
     break; 
     } 
    } 
    } 
    return found; 
} 

function searchSideBar() 
{ 
    var ui = HtmlService.createHtmlOutputFromFile('sectionSearchDialog').setTitle('State Search'); 
    SpreadsheetApp.getUi().showSidebar(ui); 
} 

function isACity(city,cities) 
{ 
    var city = (typeof(city) != 'undefined')?city:''; 
    var cities = (typeof(cities) != 'undefined')?cities:''; 
    var r = -1; 
    if(city && cities) 
    { 
    var citiesA = String(cities).split(','); 
    r = citiesA.indexOf(city); 
    } 
    return r; 
} 

スプレッドシートは次のようになります。 enter image description here

サイドバーを実行する必要がありますdeをロードするか、onOpen()でそれを行うことができます。お役に立てれば。

関連する問題