2017-11-12 16 views
0

"プロジェクト"、 "ロケール"、 "日付"などの入力を得ることができる関数を探しています。この関数は、スプレッドシートの関連シートに "ロケールと日付に基づいて関連する行を表示します。いくつかの変数に基づいて行を追加する

例:
スプレッドシートXには3つのシートが含まれています - プロジェクト1、プロジェクト2 &概要。 要約シートには、プロジェクト、ロケール&の3つの変数があります。私はまた、 "ショー"のボタンを持っています。 「ショー」をクリックすると、変数に応じてデータが表示されます。

+0

あなたは[クラスSpreadsheetApp]を掘りで始めることができます(https://developers.google.com/アプリスクリプト/リファレンス/スプレッドシート/スプレッドシートアプリ)。シート間を操作するには、[setActiveSheet(sheet)](https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#setactivesheetsheet)を使用して別のシートを開くなどの方法を使用する方法を知っておく必要があります。 [スプレッドシート]ボタンについては、[SO post](https://stackoverflow.com/questions/28668766/adding-butt.ons-to-google-sheets-and-set-value-to-cells)を参照してください。クリックしない) – noogui

答えて

0

ここでは簡単な例を挙げておきます。これには検索ボタンとクリアボタンが含まれており、データを表示したいサマリーテーブルの行にあるセルを選択することが期待されます。サマリーテーブルの行を選択すると、検索ボタンがクリックされ、その場所と日付のプロジェクトページのデータがサイドバーに表示されます。データを消去する場合は、クリアボタンを押します。

Code.gs:

function searchForDataSideBar() 
{ 
    var ui=HtmlService.createHtmlOutputFromFile('searchinfordata'); 
    SpreadsheetApp.getUi().showSidebar(ui); 
} 

function searchForData() 
{ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getSheetByName('Summary'); 
    var cell=sh.getActiveCell(); 
    var row=cell.getRow(); 
    var cols=sh.getLastColumn(); 
    var rg=sh.getRange(row, 1, 1, cols); 
    var vA=rg.getValues(); 
    var sh1=ss.getSheetByName(vA[0][0]); 
    var rg1=sh1.getDataRange(); 
    var vA1=rg1.getValues(); 
    var s=''; 
    for(var i=1;i<vA1.length;i++) 
    { 
    var data=vA1[i]; 
    var a=vA[0][1]; 
    var b=data[0]; 
    var c=vA[0][2].valueOf(); 
    var d=data[1].valueOf(); 
    if(a==b && c==d) 
    { 
     s+=Utilities.formatString('Project Name:%s<br />Location:%s<br />Date:%s<br />Data1:%s<br />Data2:%s</br>Data3:%s</br>Data4:%s</br>Data5:%s</br><hr>',vA[0][0],data[0],Utilities.formatDate(new Date(data[1]), Session.getScriptTimeZone(), "E MMM dd,yy"),data[2],data[3],data[4],data[5],data[6]) 
    } 
    } 
    return s; 
} 

私は上のボタンを配置すると、あなたのデータを表示するサイドバーを使用していました。私のファイルの名前はsearchinfordata.htmlた:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Searching for Data</title> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script> 
    function search() 
    { 
    google.script.run 
     .withSuccessHandler(found) 
     .searchForData(); 
    } 
    function found(hl) 
    { 
    document.getElementById('found').innerHTML=hl; 
    } 
    function clearDiv() 
    { 
    document.getElementById('found').innerHTML=''; 
    } 
    console.log('MyCode'); 
    </script> 
    </head> 
    <body> 
    <div id="instr">Please Select a cell on the row in the summary tab that you wish to see the data for.</div> 
    <input type="button" value="Search" onClick="search();" /> 
    <input type="button" value="Clear" onClick="clearDiv();" /> 
    <div id="found"></div> 
    </body> 
</html> 

そして、ここでは、あなたのメニューを構築したり、サイドバーを起動することができます開く時()関数です。

function onOpen() 
{ 
    SpreadsheetApp.getUi().createMenu('My Tools') 
     .addItem('Show Sidebar','searchForDataSideBar') 
    .addToUi(); 

    searchForDataSideBar();//launches your sidebar whenever you open your spreadsheet. 
} 

これは、概要タブが次のようになります。

enter image description here

P1タブ:

enter image description here

P2タブ:

enter image description here

P3タブ:

enter image description here

し、最終的にサイドバー:

enter image description here

関連する問題