teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

タイトル等修正

2020/02/03 08:48

投稿

yukitorte
yukitorte

スコア9

title CHANGED
@@ -1,1 +1,1 @@
1
- GAS・webアプリを使ったパスワード照合
1
+ GASとGSSを使ったパスワード照合が必ず不一致になる
body CHANGED
@@ -1,8 +1,17 @@
1
1
  お世話になります。
2
- GASで出力したwebアプリとスプレッドシートのデータで、
3
- パスワード制限をかけようとしているのですが、
2
+ GASで出力したhtml(webアプリケーション)でパスワード制限をかけようとしているのですが、
3
+ スプレッドシート(GSS)のデータとの照合がうまくいっていないようなので
4
- データ照合がうまくいっていないようなのでお知恵をお貸しいただけますでしょうか。
4
+ お知恵をお貸しいただけますでしょうか。
5
5
 
6
+ ###やりたいこと
7
+ ・indexにてパスワードを入力し送信
8
+ ・GSS内のパスワードリストを照会し、正しければMenu1.htmlを、正しくなければMenu2.htmlを表示する
9
+ ・GSS内のログシートへ、入場日時と照会の結果と使用パスワードを記録する
10
+
11
+ ###状況
12
+ ・パスワードリストに含まれている文字列を入力しても必ずMenu2へ遷移する
13
+ ・特定のパスワードのみ有効な形式にしたときはMenu1に遷移できる(後述)
14
+
6
15
  ### 現在のコード
7
16
  ```gas
8
17
  function doGet(e){
@@ -25,7 +34,7 @@
25
34
  var SS = SpreadsheetApp.openById('***************************');//参照先のSSのID
26
35
  var passSh = SS.getSheetByName('pass') //パスワード格納シート
27
36
  var passVal = passSh.getDataRange().getValues(); //passシート内の値を取得
28
- var LastRow = passSh.getDataRange().getLastRow(); //シート内の最終行
37
+ var LastRow = passSh.getDataRange().getLastRow(); //passシート内の最終行
29
38
  var col = "B"; //passリストが記載されている列
30
39
 
31
40
  var LogSh = SS.getSheetByName('test_log') //ログ記録シート
@@ -55,6 +64,7 @@
55
64
  9  1 hoge1 ユーザーA
56
65
  10 2 hoge2 ユーザーB
57
66
  といった感じで、以下400程度『No』『PASS』『ユーザー名』が続いています。
67
+ ユーザー名は入力式ではなく、使用されたパスワードと所持ユーザーを紐付けるためだけの目的です。
58
68
 
59
69
  ### 試した事
60
70
  現状、ログシートには入力したとおり正常に記録されていて

2

誤字の修正

2020/02/03 08:48

投稿

yukitorte
yukitorte

スコア9

title CHANGED
File without changes
body CHANGED
@@ -32,17 +32,17 @@
32
32
  var date = new Date();
33
33
  var today = Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd HH:mm"); //dateのフォーマット指定
34
34
 
35
- var name = e.parameter.name; //入力された文字列の受取
35
+ var pass = e.parameter.name; //入力された文字列の受取
36
36
 
37
37
 
38
38
  for(var row = 9; row <= LastRow-1; row++) { //rowを9行目から最終行まで値を1ずつ増加
39
- if(passVal[row][col] === name){
39
+ if(passVal[row][col] === pass){
40
- var array = [date,"Success",name];
40
+ var array = [date,"Success",pass];
41
41
  LogSh.appendRow(array);
42
42
  return HtmlService.createHtmlOutputFromFile('Menu1').setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
43
43
 
44
44
  } else{
45
- var array = [date,"fail",name];
45
+ var array = [date,"fail",pass];
46
46
  LogSh.appendRow(array);
47
47
  return HtmlService.createHtmlOutputFromFile('Menu2').setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
48
48
  }

1

試した事の内容を若干追記しました。

2020/02/03 07:55

投稿

yukitorte
yukitorte

スコア9

title CHANGED
File without changes
body CHANGED
@@ -57,10 +57,13 @@
57
57
  といった感じで、以下400程度『No』『PASS』『ユーザー名』が続いています。
58
58
 
59
59
  ### 試した事
60
+ 現状、ログシートには入力したとおり正常に記録されていて
61
+ 文字化け等もないため、文字列は正常に受け取っているとは思います。
62
+ となると、if構文の中身に問題がある(照会の仕方が悪い)か、
63
+ passValが正しくデータを取得できていないか……のどちらかではないかと思っていますが……。
64
+
60
65
  for構文を取り払って、`if("hogehoge" === name)) { ......`という形にして
61
- indexのパスワードフォームで『hogehoge』を入力すると、
66
+ indexのパスワードフォームで『hogehoge』を入力すると、想定どおりMenu1へ移動しました。
62
- 想定どおりMenu1へ飛ばされたので、恐らく`for ~ passVal[row][col]`の間で
63
- 何か引っかかってるんだろうなぁ……とは思っています。
64
67
 
65
68
  ---
66
69
  初歩的な内容で大変申し訳ありませんが、どうぞよろしくお願いします。