質問編集履歴
2
説明文の改良
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,34 +5,31 @@
|
|
5
5
|
現状、自分なりに出来上がったけど、本当にこれでよかったのか?FOR文とか多いし、同じ情報の定数を分岐用に重複作成しているし、もっと簡潔な書き方があるんじゃないかと思っているのですが、どうにもこうにも分からず、知識を分けていただけないかと投稿しました。
|
6
6
|
|
7
7
|
|
8
|
+
### 今件に関してスクリプトを二つ載せます。
|
9
|
+
1つ目は失敗作 [解決策分からずボツ] //ひとつの変数[ formVal ]を元にで全文に対応できないかと書いてみたスクリプトです。
|
10
|
+
2つ目はの改善版です [動作確認済み]
|
11
|
+
|
12
|
+
|
13
|
+
|
8
|
-
求める動作は以下です。
|
14
|
+
### 1つ目に求める動作は以下です。
|
9
|
-
1.フォーマット回答受信 シート名”FORM”
|
15
|
+
1.フォーマット回答受信 シート名”FORM” (内容はcolmA_タイムスタンプ、colmB-K_10個分の回答枠、colmL_増設した更新日枠)
|
10
|
-
2.
|
16
|
+
2. 1を変数[ formVal ]としてシート全体を取得
|
11
17
|
3.フィルター[ formFil1 ]を通して、新しい受信記録だけを抽出([ formVal ]内の更新日の有無で判別。新規の回答には更新日は含まれておらず、このスクリプトの完了時に日付を入れる仕組みです。)
|
12
18
|
4.その後も[formFil2] > [formFil3]と掲示用 シート名”ORG”仕様に形状を変え完成したものをシート名”ORG”に貼り付け
|
13
19
|
5. 3で’使用した変数[ formFil1 ]を再宣言
|
14
20
|
6.[ formFil1 ]のか空白の更新日欄に更新日を追加してシート名”FORM”内で上書き
|
15
21
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
今件に関してスクリプトを二つ載せます。
|
20
|
-
|
22
|
+
#### [ エラ-症状 ]
|
21
|
-
|
23
|
+
エラー症状としては、上記4の”ORG”に貼り付けまでは問題なく動くのですか、
|
22
|
-
|
23
|
-
求める動作は以下です。
|
24
|
-
1.フォーマット回答受信 シート名”FORM” (内容はcolmA_タイムスタンプ、colmB-K_10個分の回答枠、colmL_増設した更新日枠)
|
25
|
-
2. 1を変数[ formVal ]としてシート全体を取得
|
26
|
-
3.フィルター[ formFil1 ]を通して、新しい受信記録だけを抽出([ formVal ]内の更新日の有無で判別。新規の回答には更新日は含まれておらず、このスクリプトの完了時に日付を入れる仕組みです。)
|
27
|
-
4.その後も[formFil2] > [formFil3]と掲示用 シート名”ORG”仕様に形状を変え完成したものをシート名”ORG”に貼り付け
|
28
|
-
5. 3で’使用した変数[ formFil1 ]を再宣言
|
29
|
-
6.[ formFil1 ]のか空白の更新日欄に更新日を追加してシート名”FORM”内で上書き
|
30
|
-
|
31
|
-
|
24
|
+
5.で変数[ formFil1 ]を再宣言した時に[formFil2]の値が返ってきてしまうというものです。
|
32
25
|
>>>どうしてそうなってしまうのか?原因が知りたいです。
|
33
26
|
|
34
27
|
|
28
|
+
---
|
29
|
+
|
30
|
+
|
31
|
+
|
35
|
-
2つ目は [動作確認済み]
|
32
|
+
### 2つ目は [動作確認済み]
|
36
33
|
2つ目は1つ目が解決できなかったので、最初から変数を[ formVal ]だけでなく[formVal_F]と[formVal_O]を重複作成し動作までこぎついたスクリプトです。
|
37
34
|
var formVal = form_sh.getRange(col_A + "2:" + col_L + form_sh.getLastRow()).getValues();
|
38
35
|
const formVal_F = form_sh.getRange(col_A + "2:" + col_L + form_sh.getLastRow()).getValues();
|
@@ -42,7 +39,7 @@
|
|
42
39
|
|
43
40
|
|
44
41
|
素人ながら考えたスクリプトですので悪しからず、、、
|
45
|
-
もしよろしければ、答え合わせに付き合っていただける方是非、返答をお願いします。
|
42
|
+
説明文が悪く、6/18に書き直しをしてみました。もしよろしければ、答え合わせに付き合っていただける方是非、返答をお願いします。
|
46
43
|
よろしくお願いします!!
|
47
44
|
|
48
45
|
|
1
説明があまりにも雑になりすぎていました。投稿内容自体を書き直してみましたので再度ご確認をいただけないでしょうか?
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,14 +4,41 @@
|
|
4
4
|
というスクリプト作成を行なっています。
|
5
5
|
現状、自分なりに出来上がったけど、本当にこれでよかったのか?FOR文とか多いし、同じ情報の定数を分岐用に重複作成しているし、もっと簡潔な書き方があるんじゃないかと思っているのですが、どうにもこうにも分からず、知識を分けていただけないかと投稿しました。
|
6
6
|
|
7
|
+
|
8
|
+
求める動作は以下です。
|
9
|
+
1.フォーマット回答受信 シート名”FORM”
|
10
|
+
2. 1を変数[ formVal ]としてシート全体を取得
|
11
|
+
3.フィルター[ formFil1 ]を通して、新しい受信記録だけを抽出([ formVal ]内の更新日の有無で判別。新規の回答には更新日は含まれておらず、このスクリプトの完了時に日付を入れる仕組みです。)
|
12
|
+
4.その後も[formFil2] > [formFil3]と掲示用 シート名”ORG”仕様に形状を変え完成したものをシート名”ORG”に貼り付け
|
13
|
+
5. 3で’使用した変数[ formFil1 ]を再宣言
|
14
|
+
6.[ formFil1 ]のか空白の更新日欄に更新日を追加してシート名”FORM”内で上書き
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
7
19
|
今件に関してスクリプトを二つ載せます。
|
8
20
|
1つ目は失敗作 [解決策分からずボツ]
|
21
|
+
ひとつの変数[ formVal ]を元にで全文に対応できないかと書いてみたスクリプトです。
|
22
|
+
|
23
|
+
求める動作は以下です。
|
24
|
+
1.フォーマット回答受信 シート名”FORM” (内容はcolmA_タイムスタンプ、colmB-K_10個分の回答枠、colmL_増設した更新日枠)
|
25
|
+
2. 1を変数[ formVal ]としてシート全体を取得
|
9
|
-
|
26
|
+
3.フィルター[ formFil1 ]を通して、新しい受信記録だけを抽出([ formVal ]内の更新日の有無で判別。新規の回答には更新日は含まれておらず、このスクリプトの完了時に日付を入れる仕組みです。)
|
27
|
+
4.その後も[formFil2] > [formFil3]と掲示用 シート名”ORG”仕様に形状を変え完成したものをシート名”ORG”に貼り付け
|
28
|
+
5. 3で’使用した変数[ formFil1 ]を再宣言
|
29
|
+
6.[ formFil1 ]のか空白の更新日欄に更新日を追加してシート名”FORM”内で上書き
|
30
|
+
|
31
|
+
**エラ-症状としては、4.までは問題なく動くのですか、5.で変数[ formFil1 ]を再宣言した時に[formFil2]の値が返ってきてしまうというものです。
|
10
32
|
>>>どうしてそうなってしまうのか?原因が知りたいです。
|
11
33
|
|
34
|
+
|
12
35
|
2つ目は [動作確認済み]
|
13
|
-
2つ目は1つ目が解決できなかったので、
|
36
|
+
2つ目は1つ目が解決できなかったので、最初から変数を[ formVal ]だけでなく[formVal_F]と[formVal_O]を重複作成し動作までこぎついたスクリプトです。
|
37
|
+
var formVal = form_sh.getRange(col_A + "2:" + col_L + form_sh.getLastRow()).getValues();
|
38
|
+
const formVal_F = form_sh.getRange(col_A + "2:" + col_L + form_sh.getLastRow()).getValues();
|
39
|
+
const formVal_O = form_sh.getRange(col_A + "2:" + col_L + form_sh.getLastRow()).getValues();
|
40
|
+
|
14
|
-
>>>これに関して、本当にこういった書き方でも良いのか?もっと簡略化した書き方やアドバイスをいただきたいです。
|
41
|
+
>>>これに関して、本当にこういった書き方でも良いのか?壊れやすい書き方は1つ目と2つ目のどっちなのか?もっと簡略化した書き方やアドバイスをいただきたいです。
|
15
42
|
|
16
43
|
|
17
44
|
素人ながら考えたスクリプトですので悪しからず、、、
|
@@ -34,13 +61,13 @@
|
|
34
61
|
const form_sh = ss.getSheetByName('フォームの回答 1');
|
35
62
|
const org_sh = ss.getSheetByName('掲示板');
|
36
63
|
|
37
|
-
//値
|
64
|
+
//値変数取得 シート名”FORM”
|
38
65
|
var formVal = form_sh.getRange(col_A + "2:" + col_L + form_sh.getLastRow()).getValues();
|
39
66
|
|
40
67
|
//フィルター#1 >>更新日”空白”を抽出
|
41
|
-
var formFil
|
68
|
+
var formFil1 = formVal.filter(array => array[11] === "");
|
42
69
|
|
43
|
-
//値変数取得 ”ORG”
|
70
|
+
//値変数取得 シート名”ORG”
|
44
71
|
const orgVal = org_sh.getRange(col_A + "1:" + col_B + org_sh.getLastRow()).getValues();
|
45
72
|
|
46
73
|
//時間取得
|
@@ -49,33 +76,33 @@
|
|
49
76
|
const update_Format = Utilities.formatDate(update, 'HST', 'yyyy/MM/dd ');
|
50
77
|
|
51
78
|
//フィルター#2 >>投稿日の削除
|
52
|
-
for (var f = 0; f < formFil
|
79
|
+
for (var f = 0; f < formFil1.length; f++) {
|
53
|
-
formFil
|
80
|
+
formFil1[f].shift();
|
54
81
|
} if (f.length < 1) return;
|
55
82
|
|
56
83
|
//フィルター#3 >>フラットにして”空白”の削除
|
57
|
-
const form
|
84
|
+
const formFil2 = formFil1.flat();
|
58
|
-
const formFil
|
85
|
+
const formFil3 = formFil2.filter(val => val);
|
59
86
|
|
60
87
|
//更新日挿入
|
61
88
|
const orgVal_Temp = []
|
62
|
-
orgVal_Temp.push([update_Format, formFil
|
89
|
+
orgVal_Temp.push([update_Format, formFil3[0]])
|
63
|
-
for (var ff = 1; ff < formFil
|
90
|
+
for (var ff = 1; ff < formFil3.length; ff++) {
|
64
|
-
orgVal_Temp.push(["〃", formFil
|
91
|
+
orgVal_Temp.push(["〃", formFil3[ff]]);
|
65
92
|
} if (ff.length < 1) return;
|
66
93
|
|
67
|
-
//
|
94
|
+
//ORGシートに貼り直し
|
68
95
|
orgVal.splice(1, 0, ...orgVal_Temp);
|
69
96
|
org_sh.getRange(1, 1, orgVal.length, orgVal[0].length).setValues(orgVal);
|
70
97
|
|
71
98
|
//ここから FORMシートに更新日追加して上書き
|
72
|
-
for (var fff = 0; fff < formFil
|
99
|
+
for (var fff = 0; fff < formFil1.length; fff++) {
|
73
|
-
formFil
|
100
|
+
formFil1[fff].pop(); //更新日の”空白”削除
|
74
|
-
formFil
|
101
|
+
formFil1[fff].push(update_Format); //更新日の追加
|
75
102
|
var found = false;
|
76
103
|
for (var fv = 0; fv < formVal.length; fv++) {
|
77
|
-
if (formVal[fv][0].getTime() === formFil
|
104
|
+
if (formVal[fv][0].getTime() === formFil1[fff][0].getTime() && formVal[fv][1] === formFil1[fff][1]) {
|
78
|
-
formVal[fv] = formFil
|
105
|
+
formVal[fv] = formFil1[fff]; //内容の上書き
|
79
106
|
found = true;
|
80
107
|
break;
|
81
108
|
}
|