

スプレッドシートをDB的に活用したいのです。  
index.htmlの［selectindex］に値を入れて検索し、その結果を［text1］,［text2］に表示したいのですが、なかなか思うように動作しません。  
どなたかお力添えをいただければ助かります。

**コード.gs**

[code]

    function doGet() {
      var tpl = HtmlService.createTemplateFromFile('index.html');
      return tpl.evaluate();
    
    }
    
    function SelectData( form ) {
    
    
      var SPREAD_ID = '1j5TH87Wv9Uz8KpQXXXXXXXXXXXXXXXXXXXXX5ZJKg';
      var SHEET_NAME = 'シート1';
      ss = SpreadsheetApp.openById(SPREAD_ID); //スプレッド取得
      sheet = ss.getSheetByName(SHEET_NAME);   //シート取得
    
      Logger.log(ss);
    
      //1行目1列から30行目1列まで順次確認
      for(var i = 1;i < 20;i++){
        var val = sheet.getRange(i, 1).getValue();
        if ( val == form.selectindex ) {
          //2列目の値を返す
          return sheet.getRange(i, 2).getValue();
          return sheet.getRange(i, 3).getValue();
          var data1=sheet.getRange(i, 2).getValue();
          var date2=sheet.getRange(i, 3).getValue();
    
        }
      }
    
      //検索結果が無い場合
      return "not found";
    }
    
[/code]

**index.html**

[code]

    <!DOCTYPE html>
    <html>
    <head>
    <title>スプレッド読込みテスト</title>
    <!--クライアントスクリプト-->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script>
      $(function() {
        $('#edit input[type="submit"]').click(function(e) {
          e.preventDefault();
          google.script.run.withSuccessHandler(eventEnd).SelectData(this.parentNode);
        });
      });
      // SelectData() が完了したら呼び出される
      function eventEnd( serverResult ) {
    
    
       //Msgを表示させる
     //window.confirm(serverResult);
       document.form1.text1.value=(serverResult);
    
      }
    </script>
    
    </head>
    
    <!--本体-->
    <body>
     <div id="edit">
    
          <form name="form1">
            <input id="selectindex" name="selectindex" type="text" value="" ><br>
            <input id="selectindex" name="text1" type="text" value="" >
            <input id="selectindex" name="text2" type="text" value="" >          
            <input id="submitbutton" name="submitbutton" type="submit" value="スプレッド内容表示" >
    
    
          </form>
    
     </div>
    </body>
    </html>
    
[/code]


CC BY-SA 3.0
2016-02-07T03:48:25.283
21798
2016-10-14T03:25:57.203
2016-02-07T04:06:20.907
7837
13745
question
javascript google-apps-script
スプレッドシートからのデータ読み出し


`id` の書き方が間違っているのではないでしょうか？ 少なくとも `id` は、一つの html 内で、一意であるという規約のはずです。

`id=text1` に変更して試したところ、動きました。

[code]

        <form name="form1">
          <input id="selectindex" name="selectindex" type="text" value="">
          <br>
          <input id="text1" type="text" value="">
          <input id="text2" type="text" value="">
          <input id="submitbutton" name="submitbutton" type="submit" value="スプレッド内容表示">
        </form>
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/djpDM.png)](https://i.stack.imgur.com/djpDM.png)

[![画像の説明をここに入力](https://i.stack.imgur.com/rUuW3.gif)](https://i.stack.imgur.com/rUuW3.gif)

# 追記 2016-02-08 22:15

gs 側で、複数の値を返す用に変更

[code]

    function SelectData( form ) {
      var SPREAD_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx';
      var SHEET_NAME = 'シート1';
      ss = SpreadsheetApp.openById(SPREAD_ID); //スプレッド取得
      sheet = ss.getSheetByName(SHEET_NAME);   //シート取得
    
      Logger.log(ss);
    
      var values = [];
    
      //1行目1列から30行目1列まで順次確認
      for(var i = 1;i < 20;i++){
        var val = sheet.getRange(i, 1).getValue();
        if ( val == form.selectindex ) {
          values.push(sheet.getRange(i, 2).getValue());
          values.push(sheet.getRange(i, 3).getValue());
        }
      }
      return values;
    }
    
[/code]

html の js 側で、複数の値を取得するように変更

[code]

    // SelectData() が完了したら呼び出される
    function eventEnd(serverResult) {      
      document.form1.text1.value = serverResult[0];
      document.form1.text2.value = serverResult[1];
    }
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/mejyS.gif)](https://i.stack.imgur.com/mejyS.gif)


CC BY-SA 3.0
2016-02-07T08:32:26.003
21808
2016-02-08T13:19:32.953
2016-02-08T13:19:32.953
7471
7471
21798
answer