基于一些变量添加行

时间:2017-11-12 07:25:32

标签: google-apps-script google-sheets

我正在寻找能够获得输入的功能,例如 - " project"," locale"," date"并且该功能将根据"项目"转到电子表格中的相关表格。 value,将根据区域设置和日期显示相关行。

例如 -
电子表格X包括3张 - 项目1,项目2和1。摘要。 在摘要表中,我有3个变量 - project,locale&日期。我还有一个" show"的按钮。 一旦我点击"显示"该函数将根据变量向我显示数据。

1 个答案:

答案 0 :(得分: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>

这是onOpen()函数,您可以在其中构建菜单或启动侧栏。

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