質問編集履歴
2
修正後コードを追加掲載
test
CHANGED
File without changes
|
test
CHANGED
@@ -134,7 +134,67 @@
|
|
134
134
|
ブロック②、③、、、とブロック間で連続して処理が走るように
|
135
135
|
拡張させていきたいと思っています。
|
136
136
|
|
137
|
-
|
137
|
+
### (参考) 回答を受けて修正したコード(追記)
|
138
|
-
|
138
|
+
回答を受け、コードを以下のとおり修正しましたので参考掲載します。
|
139
|
-
|
139
|
+
無事処理が走りました。
|
140
|
-
|
140
|
+
アドバイスありがとうございました。大変助かりました。
|
141
|
+
|
142
|
+
```GAS
|
143
|
+
function copyToMerge1() {
|
144
|
+
const ss = SpreadsheetApp.getActiveSpreadsheet();
|
145
|
+
const mySheet1 = ss.getSheetByName("キイロ入力シート");
|
146
|
+
const mySheet2 = ss.getSheetByName("【●●】マージ");
|
147
|
+
const mySheet3 = ss.getSheetByName("【■■】マージ");
|
148
|
+
|
149
|
+
//★ブロック間のループ
|
150
|
+
//「部署」~「所要時間」までの6列×転記処理対象最終行(MaxRows)分
|
151
|
+
//で1ブロックとする。
|
152
|
+
//ブロックの開始col(blockCol)はC列(3col)とし、6colとばしで7ブロック目(39col目)まで
|
153
|
+
for (blockCol = 3; blockCol <= 6*6 +3; blockCol +=6) {
|
154
|
+
|
155
|
+
//★ブロック内のデータ取得
|
156
|
+
//件数データありの最終行(InMaxRow)、転記処理対象最終行(MaxRows)の取得
|
157
|
+
const InMaxRow = mySheet1.getRange(18, blockCol+1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
|
158
|
+
const MaxRows = InMaxRow - 7;
|
159
|
+
console.log("MaxRows " + MaxRows); //5の想定
|
160
|
+
|
161
|
+
//「部署」~「所要時間」までの5列分×MaxRows行分をgetRange(行、列、▲行分、■列分) で
|
162
|
+
// 二次元配列(Values)として1回でまとめて取得
|
163
|
+
const myDetaRange = mySheet1.getRange(8, blockCol, MaxRows, 5);
|
164
|
+
console.log("myDetaRange " + myDetaRange.getA1Notation());
|
165
|
+
const values = myDetaRange.getValues();
|
166
|
+
console.log("values " + values);
|
167
|
+
|
168
|
+
//★マージシートへの転記処理
|
169
|
+
//▼「×××マージ」シート(mySheet2)の件数(E列)にデータありの最終行(OutMaxRow1)の取得
|
170
|
+
const OutMaxRow1 = mySheet2.getRange(mySheet2.getMaxRows(), 5).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
|
171
|
+
console.log("OutMaxRow1 " + OutMaxRow1); //10が出る想定
|
172
|
+
|
173
|
+
//▼作業日(入力シートセルE3)の内容を「マージシート(mySheet2)」のB列に転記
|
174
|
+
const myDate = mySheet1.getRange("E2").getValue();
|
175
|
+
console.log("myDate " + myDate);
|
176
|
+
mySheet2.getRange(OutMaxRow1+1, 2, MaxRows, 1).setValue(myDate); 1
|
177
|
+
|
178
|
+
//▼二次元配列(Values)の内容(5項目)を「マージシート(mySheet2)」のD列~G列に転記
|
179
|
+
//getRange(行、列、▲行分、■列分)
|
180
|
+
mySheet2.getRange(OutMaxRow1 +1, 4, MaxRows, 5).setValues(values);
|
181
|
+
|
182
|
+
//▼マージシートへの転記結果を「入力シート(mySheet1)」の「転記処理」欄に追記する
|
183
|
+
//getRange(行、列、▲行分、■列分)
|
184
|
+
mySheet1.getRange(8, blockCol+5, MaxRows, 1).setValue("転記済");
|
185
|
+
}
|
186
|
+
|
187
|
+
//▼ダイアログMsgの表示
|
188
|
+
Browser.msgBox("「●●マージシート」への転記処理が完了しました。\\n入力シートの「転記処理」列に「転記済」表示があれば問題なく転記処理がされています。", Browser.Buttons.OK);
|
189
|
+
}
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
```
|
195
|
+
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
1
補足情報の記載修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -128,8 +128,8 @@
|
|
128
128
|
前回回答内容をもとにコードの自力修正を試みましたが、私の知識が
|
129
129
|
足りず自力解決できませんでした。
|
130
130
|
|
131
|
-
そのため、コードを分解し、まずはブロック内で処理が走るよう
|
131
|
+
そのため、コードを分解し、まずはブロック内で正しく処理が走るよう
|
132
|
-
修正を試み
|
132
|
+
1つずつ修正を試みようと思っている次第です。
|
133
133
|
今回の問題が解決できたら、次ステップとして、
|
134
134
|
ブロック②、③、、、とブロック間で連続して処理が走るように
|
135
135
|
拡張させていきたいと思っています。
|