彰化一整天的論壇

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

google表單訂單查詢加匯款後3碼輸入【Google表單教學】

[複製鏈接]
 樓主| 發表於 2021-1-8 08:25:54 | 顯示全部樓層
intherain 發表於 2021-1-7 23:01
老師,試了許久圖貼不上來,表格如下兩欄六列,我是想要最後一格"要繳交"的字是紅色。謝謝!

班級         ...

修改如下.
  1. for(j=1;j<obj.length;j++)
  2. {
  3.   if(j==6)//第6列字變色
  4.         html+= '<td align="center"></br><font color=red>'+obj[j].data[i]+'</font></td>';
  5.   else
  6.         html+= '<td align="center"></br>'+obj[j].data[i]+'</td>';
  7. }
複製代碼


回復 支持 1 反對 0

使用道具 舉報

發表於 2021-1-8 08:50:43 | 顯示全部樓層

報告老師,已修改,沒有變色。謝謝老師。

  1. <html>
  2. <head>
  3. <meta charset="UTF-8" />
  4. <script type="text/javascript">
  5. function showHint(str)
  6. {
  7. var xmlhttp;

  8.         if (window.XMLHttpRequest)
  9.           {// code for IE7+, Firefox, Chrome, Opera, Safari
  10.           xmlhttp=new XMLHttpRequest();
  11.           }
  12.         else
  13.           {// code for IE6, IE5
  14.           xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  15.           }
  16.         xmlhttp.onreadystatechange=function()
  17.           {
  18.                   if (xmlhttp.readyState==4 && xmlhttp.status==200)      
  19.                   {
  20.                         var result=xmlhttp.responseText;
  21.                         var obj = JSON.parse(result);//解析json字串為json物件形式
  22.                                                 
  23.                       var html = '<table border=1 width=100%>';//
  24.                         
  25.                         for (var i = 0; i < obj[0].data.length; i ++ ) {//
  26.                                 html  += '<tr>';//
  27.                                                                 html+= '<td>'+obj[0].data[i]+'</td>';
  28.                                 for(j=1;j<obj.length;j++)
  29. {
  30.   if(j==6)//第6列字變色
  31.         html+= '<td align="center"></br><font color=red>'+obj[j].data[i]+'</font></td>';
  32.   else
  33.         html+= '<td align="center"></br>'+obj[j].data[i]+'</td>';
  34. }
  35.                                 html  += '</tr>';            
  36.                         }
  37.                         html+="</table>";

  38.                         
  39.                         document.getElementById("order_status").innerHTML=html;
  40.                     
  41.                         if(obj.length==1) //只有一筆代表查不到資料
  42.                                 alert('查無資料 請確認是否輸入錯誤');
  43.                   }

  44.           }
  45.    
  46.         xmlhttp.open("get",url+"?uid="+encodeURIComponent(str),true);
  47.         xmlhttp.send();
  48. }
  49. </script>
  50. </head>
  51. <body>

  52. 輸入A01,A02,A03:<input type="text" id="uid" />
  53. <input type="button" name="inq" value="查詢" onclick="showHint(uid.value);"></br>
  54. <span id="order_status"></span>
  55. </body>
  56. </html>
複製代碼
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-1-8 09:05:37 | 顯示全部樓層
本帖最後由 imingho 於 2021-1-8 09:07 編輯
intherain 發表於 2021-1-8 08:50
報告老師,已修改,沒有變色。謝謝老師。

  1. <html>
  2. <head>
  3. <meta charset="UTF-8" />
  4. <script type="text/javascript">
  5. function showHint(str)
  6. {
  7. var xmlhttp;

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

  43.           }
  44.     var url="https://script.google.com/macros/s/AKfycbwJOajAYKRM77CELpG5bf5koUbY-TdN24apUJfo22FLsYft9rTP/exec";
  45.         xmlhttp.open("get",url+"?uid="+encodeURIComponent(str),true);
  46.         xmlhttp.send();
  47. }
  48. </script>
  49. </head>
  50. <body>

  51. 輸入購買者身分證號:<input type="text" id="uid" />
  52. <input type="button" name="inq" value="查詢" onclick="showHint(uid.value);"></br>

  53. <span id="order_status"></span>
  54. </body>
  55. </html>
複製代碼

範例網址: https://sites.google.com/view/in ... 7%E8%AE%8A%E8%89%B2
回復 支持 1 反對 0

使用道具 舉報

發表於 2021-1-8 09:33:43 | 顯示全部樓層
imingho 發表於 2021-1-8 09:05
範例網址: https://sites.google.com/view/in ... 7%E8%AE%8A%E8%89%B2

非常非常非常謝謝老師。可以了可以了可以了!!(轉圈圈中~~)
回復 支持 反對

使用道具 舉報

發表於 2021-1-16 00:41:34 | 顯示全部樓層
老師好,感謝老師的教學,我試著更改了程式碼,發現叫得出標題欄位,但是查詢不到資料,想請老師幫忙看看

完成品評台:h ttps://lst2021.blogspot.com/2021/01/var-datereviver-function-key-value-var.html
試算表:h ttps://docs.google.com/spreadsheets/d/1WE-Emdwx4nMxISWTs6JVulVvwhMmNbSBeutTnUI3IM0/edit?usp=sharing

試算表程式碼:
  1. function doGet(e) {
  2.   //h t t p s://youtu.be/sukRGQDj1G4 影音說明
  3.   var params = e.parameter;
  4.   var Date = params.Date;//日期
  5.   var Name = params.Name;//駕駛者姓名
  6.   var location=params.location;//目的地
  7.   var Getouttime=params.Getouttime//出車時間
  8.   var Mileage=params.Mileage//出車里程
  9.   var Returntriptime=params.Returntriptime//返園時間
  10.   var Returnmileage=params.Returnmileage//返園里程
  11.   var Vehicletype=params.Vehicletype//駕駛車輛
  12.   var status=params.status//車輛狀態
  13.   var confirm=params.confirm//業管確認

  14.   var Sheet = SpreadsheetApp.getActiveSheet();

  15.   var LastRow = Sheet.getLastRow();
  16.   var LastColumn = Sheet.getLastColumn();
  17.   var data = [];

  18.   // 取得全部資料
  19.   var listAll = Sheet.getSheetValues(1, 1, LastRow, LastColumn);
  20.   
  21.   //存標題
  22.   data.push({data: listAll[0]})

  23.   
  24.   // 找尋資料是否有存在
  25.   for(var i = 1;i < listAll.length; i++){
  26.     if(listAll[i].indexOf(Date) ==1 && listAll[i].indexOf(Name) ==2 && listAll[i].indexOf(location) ==3 && listAll[i].indexOf(Getouttime) ==4
  27.     && listAll[i].indexOf(Mileage) ==5 && listAll[i].indexOf(Returntriptime) ==6 && listAll[i].indexOf(Returnmileage) ==7
  28.     && listAll[i].indexOf(Vehicletype) ==8  && listAll[i].indexOf(status) ==9){ //第2欄,由0開始
  29.       if(confirm!="")
  30.       {
  31.         Sheet.getRange("L"+(i+1)).setValue(confirm);//寫回業管確認狀態
  32.         Sheet.getRange("M"+(i+1)).setValue("已審核");//寫回狀態
  33.         Sheet.getRange("N"+(i+1)).setValue(new Date());//寫回狀態
  34.         listAll[i]=Sheet.getSheetValues(i+1,1,1,LastColumn)[0];//重新讀取
  35.       }
  36.       
  37.     }
  38.   }
  39.   
  40.   //顯示資料
  41.   Logger.log(data);
  42.   
  43.   // 回傳json資料
  44.   return ContentService.createTextOutput(JSON.stringify(data))
  45.     .setMimeType(ContentService.MimeType.JSON);
  46.   
  47.   Sheet.getSheet
  48. }

複製代碼


前端程式碼:
  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(Date,Name,location,Getouttime,Mileage,Returntriptime,Returnmileage,Vehicletype,status,confirm)
  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="h t  t p s ://script.google.com/macros/s/AKfycby7d0a0T8wKAomr7Cx5Ye0uRrbuhRF6FfAAgiiVGN8Kn_dvRY8/exec";
  51.     xmlhttp.open("get",url+"Date="+Date+"&Name="+Name+"&location="+location+"&Getouttime="+Getouttime
  52.                  +"&Mileage="+Mileage+"&Returntriptime="+Returntriptime+"&Returnmileage="+Returnmileage
  53.                  +"&Vehicletype="+Vehicletype+"&status="+status+"&confirm="+confirm,true);
  54.     xmlhttp.send();
  55.   
  56. }
  57. </script>
  58. </head>
  59. <body>

  60. 請輸入查詢日期:<input id="Date" type="text" /><br />
  61. 請輸入查詢駕駛姓名:<input id="Name" type="text" /><br />
  62. 請輸入查詢目的地:<input id="location" type="text" /><br />
  63. 請輸入查詢出車時間:<input id="Getouttime" type="text" /><br />
  64. 請輸入查詢出車里程:<input id="Mileage" type="text" /><br />
  65. 請輸入查詢返園時間:<input id="Returntriptime" type="text" /><br />
  66. 請輸入查詢返園里程:<input id="Returnmileage" type="text" /><br />
  67. 請輸入查詢使用車輛:<input id="Vehicletype" type="text" /><br />
  68. 請輸入查詢車輛狀況:<input id="status" type="text" /><br />
  69. 業管回報狀況說明:<input id="confirm" type="text" /><br />
  70. <input name="inq" onclick="bestdaylong_inq(Date,Name,location,Getouttime,Mileage,Returntriptime,Returnmileage,Vehicletype,status,confirm);" type="button" value="送出" />

  71. <span id="order_status"></span>
  72. </body>
  73. </html>
複製代碼


回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-1-16 13:13:22 | 顯示全部樓層
本帖最後由 imingho 於 2021-1-16 13:15 編輯
asas8073 發表於 2021-1-16 00:41
老師好,感謝老師的教學,我試著更改了程式碼,發現叫得出標題欄位,但是查詢不到資料,想請老師幫忙看看

...

您好,
    您的試算表沒有分享成功,會出現要求權限。
google_sheet_share_01.jpg

請參考底下這篇.

如何將google表單與試算表與其他人共用【Google表單教學】
http://discuz.bestdaylong.com/thread-38444-1-1.html
(出處: 彰化一整天的論壇)

補上您再另一篇的留言.
---------------------------------------
版主您好,感謝您無私的分享跟教學
照著版主的方法也成功呼叫出資訊了。
有幾個問題想請版主協助解答。

因為我想設計一個公務車管理系統,主要的欄位如下述。
[輸入日期] :登入系統的日期
[駕駛姓名]:駕車的司機
[目的地]:出發去哪裡      
[請輸入出車時間]:從公司出去的時間      
[出車里程]        :出車時的里程數
[請輸入返園時間]:從目的地回公司時間      
[返園里程]        :回公司時的里程數
[駕駛車輛]        :開哪一台公務車出門
[車輛狀態]        :目前分成 有異常 跟 無異常
車輛狀態說明:有異常就會在這一行文字說明
-------------------------------------------------------------
目前遇到第一個問題是這個程式碼可以在同一個資料庫做不同欄位的查詢嗎?
例如我想就[輸入日期]查詢是想分析每天出幾趟車
例如我想就[駕駛姓名]查詢想分析每位員工使用公務車的頻率
例如我想就[里程數]查詢想分析每趟里程數
類似這樣,所以才想說請問版主他能做不同的欄位查詢嗎。
---------------------------------------------------------------
第二個問題為如果可以做多欄位的查詢,那能使用下拉式選單放這些欄位嗎?
目前有套入下拉式程式碼,樣子對了,但沒辦法發揮功能。
我做的範例:h t t p s : / / lst2021.blogspot.com/2021/01/date.html
-----------------------------------------------------------------
以上兩個問題想請版主幫幫忙,感謝版主。

回復 支持 反對

使用道具 舉報

發表於 2021-1-16 13:26:05 | 顯示全部樓層
imingho 發表於 2021-1-16 13:13
您好,
    您的試算表沒有分享成功,會出現要求權限。
請參考底下這篇.

老師您好,已經補上試算表的共用囉,在麻煩老師幫忙看一下程式碼的部份,感謝老師。
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-1-16 13:50:08 | 顯示全部樓層
asas8073 發表於 2021-1-16 13:26
老師您好,已經補上試算表的共用囉,在麻煩老師幫忙看一下程式碼的部份,感謝老師。 ...

因為您的資料中有日期寫法會不一樣,請參考.
如何設計訂單查詢系統_日期區間顯示【Google表單教學】
http://discuz.bestdaylong.com/thread-39138-1-1.html
(出處: 彰化一整天的論壇)

還有
&& (和)  表示要全部的欄位都輸入才會顯示
您應該是用
|| (或)   只要有一個條件符合就顯示
回復 支持 反對

使用道具 舉報

發表於 2021-1-16 14:30:56 | 顯示全部樓層
imingho 發表於 2021-1-16 13:50
因為您的資料中有日期寫法會不一樣,請參考.
如何設計訂單查詢系統_日期區間顯示【Google表單教學】
http ...

老師午安,我有修改了試算表的程式碼,將&&改成||
但是改完發布後反而完全查不出資料來。
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-1-16 14:48:50 | 顯示全部樓層
asas8073 發表於 2021-1-16 14:30
老師午安,我有修改了試算表的程式碼,將&&改成||
但是改完發布後反而完全查不出資料來。
...

您的程式碼有錯誤,第51行沒有輸入完.
google_sheet_error_2021016.jpg

回復 支持 反對

使用道具 舉報

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

本版積分規則

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

GMT+8, 2021-4-11 03:36 , Processed in 0.121594 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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