GAS初心者です。
拙い質問・情報不足な部分があるかと思いますが、何卒ご容赦ください。
前提
【使用するシート】
・シートA(スケジュール表、1日の流れが全て記載されている)
・シートB(シートAと同じスケジュール表で、時間帯に分けて表示できる機能付き)
→シートAがかなり縦に長いので、シートAで全体の流れを把握しながら、実際の業務はシートBを見て進める。
【状況】
今回作成するのはシートA、シートBのテンプレです。
各事業所で担当者名を変更する必要があるため、各事業所でテンプレをコピーして別のシートに移し、シート名を変更して使用する予定です。
【やりたいこと】
・シートAに入力された担当者名をシートBに自動反映する
【質問内容】
テンプレだけであれば、シートAが編集された際にgetSheetByNameを使用してsetValueするトリガーを設定すればうまくいったのですが、実用するにあたり各営業所ごとにシート名を変更されてしまうため、getSheetByNameがうまく使えず困っております。
以下の工夫をしてみましたがどうにもうまくいかず、こちらでご質問いたしました。
・シート名が変更されても判別できるよう、下記の値を入れている
シートA:E1セルに「全体スケジュール」
シートB:E1セルに「個別スケジュール」
・変更したシートBのシート名を入力する欄を、シートAのE2セルに作成している
→そこから値を取得すれば動かせるかと思いましたがうまくいきませんでした。
実現したいこと
- シートAの担当者名(B6:F6)をシートB(B6:F6)に自動反映させる
- シート名が変更されても動くようにする
発生している問題・エラーメッセージ
・シート名が変更された際にgetSheetByNameが作用しない
該当のソースコード
やりたいことをgetSheetByNameを用いて作成したのが以下のコードです。
GAS
1function getName() { 2 var ss = SpreadsheetApp.getActiveSpreadsheet(); 3 var sh = ss.getActiveSheet();//シートAです 4 var ce = sh.getRange("E1"); 5 var va = ce.getValue(); 6 7 if(va === "全体スケジュール"){ 8 var sheet = ss.getSheetByName('シートB'); 9 var ce2 = sheet.getRange("E1"); 10 var va2 = ce2.getValue();// 11 12 if(va2 === "個別スケジュール"){ 13 var ce4 = sh.getRange("B6:F6"); 14 var getManager = ce4.getValues(); 15 var cell2 = sheet.getRange("B6:F6"); 16 cell2.setValues(getManager); 17 } 18}
解決策をご教授いただけますと幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー