getShiftValuesメソッドで、
1:シフト表の月の最終日を取得
2:その日数分繰り返す処理を実施
①処理
3:シフト表の1日の値を取得
4:chengeShiftValuesメソッドでその値を以下の様に処理
②処理
5:2次元配列で取得されていたので、取得された1次元配列の回数だけループ
6:ループ内容は1列分取得した値を2次元配列の数だけ値をチェック
7:switch文でシフト表に記載の値に対して、対応する文字列に置換を実施
81列分すべて実施したら、配列shiftをリターン
②処理終了
9:もどってきた値をスプレッドシートの同じ場所にセット
①処理を日数分実施して終了
としたかったのですが、うまくいかず困っています。
うまくいかなかった内容としては、
まず置換が実施されなかったり、
最初の二次元配列shift[i][j]が空になって、他の値はそのままだったり。
いろいろと値を変更したりしてみたのですが、
うまくいかず、もしもアドバイスいただけたらと思い、記載しました。
最終的には、置換した値を別シートの指定したセル範囲に記載したいと思っています。
説明が足りない部分があるかもしれませんが、何かお分かりいらっしゃいましたら
ご指導の程よろしくお願いいたします。
//シフトの値を取得して返還後にセットする function getShiftValues() { var lastDay = findLastDays(); var startCol = 3; var shiftSheet = getShiftSheet(); for (var i = 1; i <= lastDay; i++) { var shift = shiftSheet.getRange(5, startCol + i, 37).getValues(); shift = chengeShiftValues(shift); shiftSheet.getRange(5, startCol + i, 37).setValues(shift); // return shift; } } //シフトの値を変更する function chengeShiftValues(shift) { for (var i = 0; i < shift.length; i++) { for (var j = 0; j < shift[i].length; j++) { switch (shift[i][j]) { case 'M①': shift[i].splice(j, 1, 'マネージャー①'); break; case 'M②': shift[i].splice(j, 1, 'マネージャー②'); break; case 'M③': shift[i].splice(j, 1, 'マネージャー③'); break; case 'M④': shift[i].splice(j, 1, 'マネージャー④'); break; case 'M⑤': shift[i].splice(j, 1, 'マネージャー⑤'); break; case '制①': shift[i].splice(j, 1, '制作①'); break; case '制②': shift[i].splice(j, 1, '制作②'); break; case '制③': shift[i].splice(j, 1, '制作③'); break; case '制④': shift[i].splice(j, 1, '制作④'); break; case '制⑤': shift[i].splice(j, 1, '制作⑤'); break; case '制⑥': shift[i].splice(j, 1, '制作⑥'); break; case '制⑦': shift[i].splice(j, 1, '制作⑦'); break; default: shift[i].splice(j, 1, ''); break; } } Logger.log(shift); return shift; } }
回答1件
あなたの回答
tips
プレビュー