質問編集履歴
3
タイトル等修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
GAS
|
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
誤字の修正
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
|
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] ===
|
39
|
+
if(passVal[row][col] === pass){
|
40
|
-
var array = [date,"Success",
|
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",
|
45
|
+
var array = [date,"fail",pass];
|
46
46
|
LogSh.appendRow(array);
|
47
47
|
return HtmlService.createHtmlOutputFromFile('Menu2').setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
|
48
48
|
}
|
1
試した事の内容を若干追記しました。
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
|
初歩的な内容で大変申し訳ありませんが、どうぞよろしくお願いします。
|