質問編集履歴

2

説明文の改良

2022/06/19 04:49

投稿

Banana
Banana

スコア3

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. 1を変数[ formVal ]としてシート全体を取得
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
- 1つ目は失敗作 [解決策分からずボツ] 
22
+ #### [ エラ-症状 ]
21
- 変数[ formVal ]を元にで全文に対応できいかと書いてみたスクリプトです
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
- **エラ-症状としては、4.までは問題なく動くのですか、5.で変数[ formFil1 ]を再宣言した時に[formFil2]の値が返ってきてしまうというものです。
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

説明があまりにも雑になりすぎていました。投稿内容自体を書き直してみましたので再度ご確認をいただけないでしょうか?

2022/06/19 04:31

投稿

Banana
Banana

スコア3

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
- ひとつ定数全文対応できないかと書いみたスクリプトです。(これは1つ目FOR文の後から、定数の中身が手前で走査した別の値が代てしまうという状態になり本来欲しい値が得られないの諦めました。)
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
- //値配列取得 ”FORM”
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_F = formVal_F.filter(array => array[11] === "");
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_F.length; f++) {
79
+ for (var f = 0; f < formFil1.length; f++) {
53
- formFil_F[f].shift();
80
+ formFil1[f].shift();
54
81
  } if (f.length < 1) return;
55
82
 
56
83
  //フィルター#3 >>フラットにして”空白”の削除
57
- const formVFlat_F = formFil_F.flat();
84
+ const formFil2 = formFil1.flat();
58
- const formFil2_F = formVFlat_F.filter(val => val);
85
+ const formFil3 = formFil2.filter(val => val);
59
86
 
60
87
  //更新日挿入
61
88
  const orgVal_Temp = []
62
- orgVal_Temp.push([update_Format, formFil2_F[0]])
89
+ orgVal_Temp.push([update_Format, formFil3[0]])
63
- for (var ff = 1; ff < formFil2_F.length; ff++) {
90
+ for (var ff = 1; ff < formFil3.length; ff++) {
64
- orgVal_Temp.push(["〃", formFil2_F[ff]]);
91
+ orgVal_Temp.push(["〃", formFil3[ff]]);
65
92
  } if (ff.length < 1) return;
66
93
 
67
- //新しい日付を一番先頭に挿入 >>ORGシートに貼り直し
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_F.length; fff++) {
99
+ for (var fff = 0; fff < formFil1.length; fff++) {
73
- formFil_F[fff].pop();   //更新日の”空白”削除
100
+ formFil1[fff].pop();   //更新日の”空白”削除
74
- formFil_F[fff].push(update_Format);   //更新日の追加
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_F[fff][0].getTime() && formVal[fv][1] === formFil_F[fff][1]) {
104
+ if (formVal[fv][0].getTime() === formFil1[fff][0].getTime() && formVal[fv][1] === formFil1[fff][1]) {
78
- formVal[fv] = formFil_F[fff];   //内容の上書き
105
+ formVal[fv] = formFil1[fff];   //内容の上書き
79
106
  found = true;
80
107
  break;
81
108
  }