質問編集履歴
1
質問内に記載するコードを全般的に見直しました。試してみたコードについては削除してしまったため、エラーコードの確認はできませんでした。
test
CHANGED
File without changes
|
test
CHANGED
@@ -29,35 +29,85 @@
|
|
29
29
|
|
30
30
|
### 該当のソースコード
|
31
31
|
|
32
|
-
```html
|
32
|
+
```index.html
|
33
|
-
|
33
|
+
<!DOCTYPE html>
|
34
|
+
<html>
|
35
|
+
<head>
|
34
|
-
|
36
|
+
<base target="_top">
|
37
|
+
<?!= HtmlService.createHtmlOutputFromFile('css').getContent(); ?>
|
35
|
-
/
|
38
|
+
</head>
|
39
|
+
<body>
|
40
|
+
<div class='contents'>
|
41
|
+
<div class='main'>
|
42
|
+
<h3><?=name?>の管理</h3>
|
43
|
+
|
44
|
+
<div class='table_Layout'>
|
45
|
+
<p>業務1</p>
|
46
|
+
<table id='業務1'></table>
|
47
|
+
</div>
|
48
|
+
|
49
|
+
</div><br>
|
50
|
+
<div class="link">
|
36
|
-
<a id="link" href="<?= getAppUrl() ?>?p=
|
51
|
+
<a id="link" href="<?= getAppUrl() ?>?p=manage&n=hogehoge">このリンクから他の人のページに移動したい</a>
|
37
|
-
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
</body>
|
55
|
+
</html>
|
38
56
|
|
57
|
+
<!--jQueryのCDN読み込み-->
|
39
|
-
|
58
|
+
<script
|
59
|
+
src="https://code.jquery.com/jquery-3.6.0.slim.min.js"
|
60
|
+
integrity="sha256-u7e5khyithlIdTpu22PHhENmPcRdFiHRjhAuHcs05RI="
|
61
|
+
crossorigin="anonymous">
|
62
|
+
</script>
|
40
63
|
|
64
|
+
<script>
|
65
|
+
|
66
|
+
//webページの読み込み時に実行
|
41
|
-
window.onload = function(){
|
67
|
+
window.onload = function(){
|
42
68
|
//エクセルDBからアサイン状況を表示
|
43
69
|
google.script.run.withSuccessHandler(function(dt) {
|
44
70
|
for(var i = 0; i<dt.length - 1; i++) {
|
71
|
+
var date = new Date(dt[i][0]);
|
72
|
+
var dateText = `${date.getMonth() + 1}月${date.getDate()}日`;
|
45
|
-
$('#
|
73
|
+
$('#業務1').append(`<input type="button"
|
46
74
|
id="${dt[i][3]}"
|
47
|
-
value="${dt
|
75
|
+
value="${dateText + '_' + 業務名をDB(スプレッドシート)から取得)'}"
|
76
|
+
onclick="window.open('<?= getAppUrl();?>?p=assign&d=${date}&f=${dt[i][1]}&n=${dt[i][2]}','_blank','width=280,height=400')">`);
|
48
77
|
}
|
49
78
|
}).values1get();
|
50
79
|
```
|
51
80
|
|
52
|
-
```g
|
81
|
+
```gs doGet
|
82
|
+
if(page == 'index' || page == null) {
|
83
|
+
const ssID = SpreadsheetApp.openById('1HCaDY19PHQLkWMKH7YqNlgyLX-GNSF4v6GKB8sRbLvQ');
|
84
|
+
const sheetID = ssID.getSheetByName('ID');
|
85
|
+
|
86
|
+
const rowCountID = sheetID.getLastRow();
|
87
|
+
const regAccountID = sheetID.getRange(2,3,rowCountID - 1,1).getValues();
|
88
|
+
var userID = Session.getActiveUser().getEmail();
|
89
|
+
const regssDBName = sheetID.getRange(2,2,rowCountID - 1,1).getValues();
|
53
90
|
|
91
|
+
for(let i = 0; i<= rowCountID - 1; i++) {
|
92
|
+
if(regAccountID[i] == userID) {
|
54
|
-
|
93
|
+
var ssDBName = regssDBName[i];
|
94
|
+
break;
|
95
|
+
}
|
96
|
+
}
|
97
|
+
let htmlOutput = HtmlService.createTemplateFromFile('index');
|
98
|
+
htmlOutput.name = ssDBName;
|
99
|
+
return htmlOutput.evaluate().setTitle('業務管理').addMetaTag('viewport', 'width=device-width,initial-scale=1');
|
100
|
+
|
101
|
+
}
|
102
|
+
|
103
|
+
```
|
104
|
+
|
105
|
+
```gs values1get()
|
55
106
|
function values1get() {
|
56
107
|
//ログイン中のgmailアカウントを元に、IDファイルからデータベースのIDを取得
|
57
|
-
//IDのスプレッドシートの取得
|
58
|
-
const ssID = SpreadsheetApp.openById('スプレッドシートのID');
|
108
|
+
const ssID = SpreadsheetApp.openById('全担当者のIDを保存しているスプレッドシートのID');
|
59
109
|
const sheetID = ssID.getSheetByName('ID');
|
60
|
-
|
110
|
+
|
61
111
|
let rowCountID = sheetID.getLastRow();
|
62
112
|
const regAccountID = sheetID.getRange(2,3,rowCountID - 1,1).getValues();
|
63
113
|
const userID = Session.getActiveUser().getEmail();
|
@@ -84,15 +134,10 @@
|
|
84
134
|
}
|
85
135
|
}
|
86
136
|
```
|
87
|
-
###
|
137
|
+
### 実現したいこと
|
88
138
|
|
89
|
-
よく事例のある、e.parameterで受け渡しができないかと思って試したところ、
|
90
|
-
リンクから開いたhtml自体にはIDを受け渡すことはできました。
|
91
|
-
ただ、html内の google.script.run.withSuccessHandler(function(){}).values1get();
|
92
|
-
で呼び出す values1get() にはIDが受け渡すことができませんでした。
|
93
|
-
|
94
|
-
|
139
|
+
indes.html内に仮で『n=hogehoge』と入れていますが、何らかの形でリンクを踏む際に担当者のID情報を受け渡す。
|
95
|
-
|
140
|
+
values1get()の関数で呼び出すスプレッドシートのIDをgetEmail()によるログイン中のIDを、リンクを踏んだ際に受け渡されたID情報を元に参照する担当者のDBを設定したい。
|
96
141
|
|
97
142
|
ご教授いただけますと幸いです。
|
98
143
|
|