彰化一整天的論壇

 找回密碼
 立即註冊
樓主: imingho

如何設計訂單查詢系統_部分顯示【Google表單教學】

[複製鏈接]
發表於 2021-6-30 20:54:42 | 顯示全部樓層
版主您好,我想設定多條件查詢(身分證字號、姓名、成績),但僅需顯示部分欄位,不過一直測試不成功,可以麻煩版主幫忙檢視那裏有問題嗎....?

function doGet(e) {
  //https://youtu.be/sukRGQDj1G4 影音說明
  var params = e.parameter;
  var ID = params.ID;//身分證字號
  var Name = params.Name;//姓名
  var Grade =params.Grade;//成績
  var Sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("成績")
  var LastRow = Sheet.getLastRow();
  var LastColumn = Sheet.getLastColumn();
  var data = [];

  // 取得部分顯示資料
  var listAll = Sheet.getSheetValues(1, 2, LastRow, LastColumn-1);
  
  // 設定查詢欄位資料
  var inq= Sheet.getSheetValues(1, 1, LastRow, 1);

  //存標題
  data.push({data: listAll[0]})

  
  // 找尋資料是否有存在
  for(var i = 1;i < listAll.length; i++){
    if(listAll[i].indexOf(ID) ==1 && listAll[i].indexOf(Name) ==3 && listAll[i].indexOf(Grade) ==5){ //第2欄,由0開始
      
    }
  }
  
  //顯示資料
  Logger.log(data);
  
  // 回傳json資料
  return ContentService.createTextOutput(JSON.stringify(data))
    .setMimeType(ContentService.MimeType.JSON);

}
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-6-30 21:33:24 | 顯示全部樓層
jenny2003girl 發表於 2021-6-30 20:54
版主您好,我想設定多條件查詢(身分證字號、姓名、成績),但僅需顯示部分欄位,不過一直測試不成功,可以麻 ...

下次張貼程式嗎請參考底下這篇.
如何在discuz張貼程式碼
http://discuz.bestdaylong.com/thread-30239-1-1.html

您的if裡面怎麼沒有程式碼,請看第一篇.
回復 支持 反對

使用道具 舉報

發表於 2021-7-1 10:04:55 | 顯示全部樓層
imingho 發表於 2021-6-30 21:33
下次張貼程式嗎請參考底下這篇.
如何在discuz張貼程式碼
http://discuz.bestdaylong.com/thread-30239-1- ...

版主您好,可以再幫我看看嗎? 另外第17列好像有問題,但不曉得怎麼修改,謝謝!

  1. function doGet(e) {
  2.   //https://youtu.be/sukRGQDj1G4 影音說明
  3.   var params = e.parameter;
  4.   var ID = params.ID;//身分證字號
  5.   var Name = params.Name;//姓名
  6.   var Grade =params.Grade;//成績

  7.   var Sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("成績")
  8.   var LastRow = Sheet.getLastRow();
  9.   var LastColumn = Sheet.getLastColumn();
  10.   var data = [];

  11.   // 取得部分顯示資料
  12.   var listAll = Sheet.getSheetValues(1, 2, LastRow, LastColumn-1);
  13.   
  14.   // 設定查詢欄位資料
  15.   var inq= Sheet.getSheetValues(1, 1, LastRow, 1);

  16.   //存標題
  17.   data.push({data: listAll[0]})

  18.   
  19.   // 找尋資料是否有存在
  20.   for(var i = 1;i < listAll.length; i++){
  21.     if(listAll[i].indexOf(ID) ==1 && listAll[i].indexOf(Name) ==3 && listAll[i].indexOf(Grade) ==5){ //第2欄,由0開始
  22.       data.push({data: listAll[i]})
  23.     }
  24.   }
  25.   
  26.   //顯示資料
  27.   Logger.log(data);
  28.   
  29.   // 回傳json資料
  30.   return ContentService.createTextOutput(JSON.stringify(data))
  31.     .setMimeType(ContentService.MimeType.JSON);

  32. }
複製代碼
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-7-1 10:40:22 | 顯示全部樓層
jenny2003girl 發表於 2021-7-1 10:04
版主您好,可以再幫我看看嗎? 另外第17列好像有問題,但不曉得怎麼修改,謝謝!

...

您可以張貼您試算表的欄位名稱,說明您是那些要查詢,那些不顯示.
回復 支持 反對

使用道具 舉報

發表於 2021-7-1 13:39:26 | 顯示全部樓層
本帖最後由 jenny2003girl 於 2021-7-1 13:42 編輯

版主您好,
查詢欄位:身分證(B欄)、姓名(D欄)、成績(F欄)
顯示欄位:臨時流水號至成績(C~F欄)
不顯示欄位:序號(A欄)、身分證(B欄)
感恩!
1625117697892.jpg
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-7-1 14:12:36 | 顯示全部樓層
jenny2003girl 發表於 2021-7-1 13:39
版主您好,
查詢欄位:身分證(B欄)、姓名(D欄)、成績(F欄)
顯示欄位:臨時流水號至成績(C~F欄)
  1. function doGet(e) {
  2.   //https://youtu.be/sukRGQDj1G4 影音說明
  3.   var params = e.parameter;
  4.   var ID = params.ID;//身分證字號
  5.   var Name = params.Name;//姓名
  6.   var Grade =params.Grade;//成績

  7.   var Sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("成績")
  8.   var LastRow = Sheet.getLastRow();
  9.   var LastColumn = Sheet.getLastColumn();
  10.   var data = [];

  11.   // 取得部分顯示資料
  12.   var listAll = Sheet.getSheetValues(1, 3, LastRow, LastColumn);
  13.   
  14.   // 設定查詢欄位資料
  15.   var inq= Sheet.getSheetValues(1, 1, LastRow, LastColumn);

  16.   //存標題
  17.   data.push({data: listAll[0]})

  18.   
  19.   // 找尋資料是否有存在
  20.   for(var i = 1;i < listAll.length; i++){
  21.     if(inq[i].indexOf(ID) ==1 && inq[i].indexOf(Name) ==3 && inq[i].indexOf(Grade) ==5){ //第2欄,由0開始
  22.       data.push({data: listAll[i]})
  23.     }
  24.   }
  25.   
  26.   //顯示資料
  27.   Logger.log(data);
  28.   
  29.   // 回傳json資料
  30.   return ContentService.createTextOutput(JSON.stringify(data))
  31.     .setMimeType(ContentService.MimeType.JSON);

  32. }
複製代碼
回復 支持 反對

使用道具 舉報

發表於 2021-7-5 08:39:11 | 顯示全部樓層
版主您好,測試查詢不到資料
1625445451084.jpg
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-7-5 09:11:42 | 顯示全部樓層
jenny2003girl 發表於 2021-7-5 08:39
版主您好,測試查詢不到資料

您改用底下程式碼試看看.
  1. function doGet(e) {
  2.   //https://youtu.be/sukRGQDj1G4 影音說明
  3.   var params = e.parameter;
  4.   var ID = params.ID;//身分證字號
  5.   var Name = params.Name;//姓名
  6.   var Grade =params.Grade;//成績

  7.   var Sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("成績")
  8.   var LastRow = Sheet.getLastRow();
  9.   var LastColumn = Sheet.getLastColumn();
  10.   var data = [];

  11.   // 取得部分顯示資料
  12.   var listAll = Sheet.getSheetValues(1, 3, LastRow, LastColumn);
  13.   
  14.   // 設定查詢欄位資料
  15.   var inq= Sheet.getSheetValues(1, 1, LastRow, LastColumn);

  16.   //存標題
  17.   data.push({data: listAll[0]})

  18.   
  19.   // 找尋資料是否有存在
  20.   for(var i = 1;i < listAll.length; i++){
  21.     if(inq[i][1] ==ID && inq[i][3] ==Name && inq[i][5] ==Grade){ //第2欄,由0開始
  22.       data.push({data: listAll[i]})
  23.     }
  24.   }
  25.   
  26.   //顯示資料
  27.   Logger.log(data);
  28.   
  29.   // 回傳json資料
  30.   return ContentService.createTextOutput(JSON.stringify(data))
  31.     .setMimeType(ContentService.MimeType.JSON);

  32. }
複製代碼
回復 支持 反對

使用道具 舉報

發表於 2021-7-5 12:51:08 | 顯示全部樓層
imingho 發表於 2021-7-5 09:11
您改用底下程式碼試看看.

謝謝版主,成功了!!!

另外以下是我用第一篇HTML改寫的,已測試過可進行查詢。
不過,我不用日期更新的功能,是不是要把dateReviver相關程式碼刪除呢?
我刪除後,查詢網頁卻變成沒有反應....

  1. <html>
  2. <head>
  3. <meta charset="UTF-8"></meta>
  4. <script type="text/javascript">
  5. var dateReviver = function (key, value) {
  6.     var a;
  7.     if (typeof value === 'string') {
  8.         a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
  9.         if (a) {
  10.             return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]));
  11.         }
  12.     }
  13.     return value;
  14. };
  15. function bestdaylong_inq(ID,Name,Grade)
  16. {
  17. var xmlhttp;

  18.         if (window.XMLHttpRequest)
  19.           {// code for IE7+, Firefox, Chrome, Opera, Safari
  20.           xmlhttp=new XMLHttpRequest();
  21.           }
  22.         else
  23.           {// code for IE6, IE5
  24.           xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  25.           }
  26.         xmlhttp.onreadystatechange=function()
  27.           {
  28.                   if (xmlhttp.readyState==4 && xmlhttp.status==200)      
  29.                   {
  30.                         var result=xmlhttp.responseText;
  31.                         var obj = JSON.parse(result,dateReviver);//解析json字串為json物件形式
  32.                                                 
  33.                         var html = '<table border=1 width=100%>';//
  34.                         
  35.                         for (var i = 0; i < obj.length; i ++ ) {//
  36.                                 html  += '<tr>';//
  37.                                 for(j=0;j<obj[i].data.length;j++)
  38.                                 {
  39.                                   html+= '<td>'+obj[i].data[j]+'</td>';
  40.                                 }
  41.                                 html  += '</tr>';            
  42.                         }
  43.                         html+="</table>";
  44.                         
  45.                         document.getElementById("order_status").innerHTML=html;
  46.                         if(obj.length==1) //只有一筆代表查不到資料
  47.                                 alert('查無資料');
  48.                   }

  49.           }
  50.     var url="https://script.google.com/macros/s/AKfycbyB1OV6ZWf0D9vtVcJvkACccxIb_i7WtVdDA42WFcBG_jqSElaj_IQPkKHqmHEERIk_/exec";
  51.     xmlhttp.open("get",url+"?ID="+ID+"&Name="+Name+"&Grade="+Grade,true);
  52.     xmlhttp.send();
  53. }
  54. </script>
  55. </head>
  56. <body>

  57. <p><font size="4"><b>輸入身分證:</b><input id="ID" type="text" /> <font color="#CC0000"><b>(身分證字號第一個英文字母需大寫)</b></font></font></p>
  58. <p><font size="4"><b>輸入姓名:</b><input id="Name" type="text" /> <font color="#CC0000"><b>(請輸入查詢姓名,如"王小品")</b></font></font></p>
  59. <p><font size="4"><b>輸入座號:</b><input id="Grade" type="text" /> <font color="#CC0000"><b>(請輸入座號,如"23")</b></font></font></p>
  60. <input name="inq" onclick="bestdaylong_inq(ID.value,Name.value,Grade.value);" type="button" value="查詢" />

  61. <span id="order_status"></span>
  62. </body>
  63. </html>
複製代碼
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-7-5 13:33:03 | 顯示全部樓層
jenny2003girl 發表於 2021-7-5 12:51
謝謝版主,成功了!!!

另外以下是我用第一篇HTML改寫的,已測試過可進行查詢。

您把它拿它拿掉.底下的也要修正.
  1. var obj = JSON.parse(result,dateReviver);//解析json字串為json物件形式
複製代碼

要改成.
  1. var obj = JSON.parse(result);//解析json字串為json物件形式
複製代碼
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)

GMT+8, 2021-9-21 00:55 , Processed in 0.152466 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表