How do I search Google Spreadsheets?

前端 未结 5 1155
心在旅途
心在旅途 2020-11-30 09:24

I am doing a few exhaustive searches and need to determine if a new domain (URL) is already in a Spreadsheet. However, none of the Spreadsheet objects have search functions,

5条回答
  •  时光说笑
    2020-11-30 09:51

    I wrote a search tool with a graphical user interface that performs a global search in 3 columns of a single sheet. It could be easily modified to suit your needs. I guess it would be a good idea to add an anchor in the UI to let you open the url you just found. Here is the code, hoping it will help you to design your own version.

    EDIT : I added the anchor widget in the code below (getting its ref in column E)

    // G. Variables
    var sh = SpreadsheetApp.getActiveSheet();
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var lastrow = ss.getLastRow();
    //
    function onOpen() {
      var menuEntries = [ {name: "Search GUI", functionName: "searchUI"},
                         ];
      ss.addMenu("Search Utilities",menuEntries);// custom menu
    }
    // Build a simple UI to enter search item and show results + activate result's row
    function searchUI() {
      var app = UiApp.createApplication().setHeight(130).setWidth(400);
      app.setTitle("Search by name / lastname / adress");
      var panel = app.createVerticalPanel();
      var txtBox = app.createTextBox().setFocus(true);
      var label=app.createLabel(" Item to search for :")
      panel.add(label);
      txtBox.setId("item").setName("item");
      var label0=app.createLabel("Row").setWidth("40");
      var label1=app.createLabel("Name").setWidth("120");
      var label2=app.createLabel("Lastname").setWidth("120");
      var label3=app.createLabel("Street").setWidth("120");
      var hpanel = app.createHorizontalPanel();
      hpanel.add(label0).add(label1).add(label2).add(label3)
    //
      var txt0=app.createTextBox().setId("lab0").setName("0").setWidth("40");
      var txt1=app.createTextBox().setId("lab1").setName("txt1").setWidth("120");
      var txt2=app.createTextBox().setId("lab2").setName("txt2").setWidth("120");
      var txt3=app.createTextBox().setId("lab3").setName("txt3").setWidth("120");
      var hpanel2 = app.createHorizontalPanel();
      hpanel2.add(txt0).add(txt1).add(txt2).add(txt3)
      var hidden = app.createHidden().setName("hidden").setId("hidden");
      var subbtn = app.createButton("next ?").setId("next").setWidth("250");
      var link = app.createAnchor('', '').setId('link');
      panel.add(txtBox);
      panel.add(subbtn);
      panel.add(hidden);
      panel.add(hpanel);
      panel.add(hpanel2);
      panel.add(link);
      var keyHandler = app.createServerHandler("click");
      txtBox.addKeyUpHandler(keyHandler)
      keyHandler.addCallbackElement(panel);
    //
      var submitHandler = app.createServerHandler("next");
      subbtn.addClickHandler(submitHandler);
      submitHandler.addCallbackElement(panel);
    //
      app.add(panel);  
      ss.show(app);
      }
    //
    function click(e){
       var row=ss.getActiveRange().getRowIndex();              
       var app = UiApp.getActiveApplication();
       var txtBox = app.getElementById("item");
       var subbtn = app.getElementById("next").setText("next ?")      
       var txt0=app.getElementById("lab0").setText('--');
       var txt1=app.getElementById("lab1").setText('no match').setStyleAttribute("background", "white");// default value to start with
       var txt2=app.getElementById("lab2").setText('');
       var txt3=app.getElementById("lab3").setText('');
       var link=app.getElementById('link').setText('').setHref('')
       var item=e.parameter.item.toLowerCase(); // item to search for
       var hidden=app.getElementById("hidden")                  
       var data = sh.getRange(2,2,lastrow,4).getValues();// get the 4 columns of data
           for(nn=0;nn

提交回复
热议问题