回答編集履歴

3

ついか

2022/12/13 07:55

投稿

Cocode
Cocode

スコア2316

test CHANGED
@@ -17,3 +17,32 @@
17
17
  + matchArray.push(nameArray[i-1])
18
18
  ```
19
19
 
20
+ ---
21
+
22
+ (コメント欄より)
23
+ > 現状、全ての行が転記されてしまいまして、
24
+ > C列配送有無、D列会計有無に文字列が入っている行のみを
25
+ > 転記するには他にどのようにしたらいいかご教示いただいてもよろしいでしょうか。
26
+
27
+ まず確認ですが、`partMatch()`関数をトリガー設定しており、onEdit(編集したら実行される)に設定しているという認識でよろしいでしょうか?
28
+ それを前提としたコードです↓
29
+
30
+ ```javascript
31
+ function partMatch(e) { // 引数にe
32
+ const activeSheetName = e.source.getSheetName(); // 編集されたシート名を取得
33
+ const targetSheetName = 'Aシート';
34
+ const activeCol = e.range. getColumn(); // 編集された列番号を取得
35
+
36
+ // 編集されたのがAシートではない または CまたはD列ではない場合、ここで処理を終了する。以降の行は実行されない。
37
+ if ( activeSheetName !== targetSheetName || (activeCol !== 3 && activeCol !== 4) ) return;
38
+
39
+ // AシートのC or D列が編集された場合のみ実行される処理をこの行以降に書く。
40
+ const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
41
+ const dataSheet = spreadSheet.getSheetByName("Aシート");
42
+ const resultSheet = spreadSheet.getSheetByName("Bシート");
43
+
44
+ // 以下省略
45
+
46
+ }
47
+ ```
48
+ こんな感じで行けると思います。

2

fix

2022/12/13 05:16

投稿

Cocode
Cocode

スコア2316

test CHANGED
@@ -4,6 +4,11 @@
4
4
  `.getRange()`における行や列の指定の数値は1から始まります。
5
5
  普段慣れ親しんだ0ではありませんのでご注意。
6
6
  よって`i`を1から開始してください。
7
+
8
+ ```diff
9
+ - for(var i=0; i<nameArrayLen; i++){
10
+ + for(var i=1; i<=nameArrayLen; i++){
11
+ ```
7
12
 
8
13
  そうすると下記部分がずれてくるので、`i-1`すればいけるかな?
9
14
 
@@ -12,8 +17,3 @@
12
17
  + matchArray.push(nameArray[i-1])
13
18
  ```
14
19
 
15
- ```diff
16
- - for(var i=0; i<nameArrayLen; i++){
17
- + for(var i=1; i<=nameArrayLen; i++){
18
- ```
19
-

1

tuiki

2022/12/13 05:15

投稿

Cocode
Cocode

スコア2316

test CHANGED
@@ -2,8 +2,15 @@
2
2
  「開始の行(の数字が)小さすぎます」というエラーですね。
3
3
 
4
4
  `.getRange()`における行や列の指定の数値は1から始まります。
5
- 普段慣れ親しんだ0ではありません
5
+ 普段慣れ親しんだ0ではありませんのでご注意。
6
6
  よって`i`を1から開始してください。
7
+
8
+ そうすると下記部分がずれてくるので、`i-1`すればいけるかな?
9
+
10
+ ```diff
11
+ - matchArray.push(nameArray[i])
12
+ + matchArray.push(nameArray[i-1])
13
+ ```
7
14
 
8
15
  ```diff
9
16
  - for(var i=0; i<nameArrayLen; i++){