●前提
GASを利用したことが無くどうにかしてマクロ?を可能であれば作っていただきたいです。
●実現したいこと
シフトをスプレッドシートで作成しているのですが、
社員向けのスプレッドは個人情報もあり
アルバイト向けに渡しているスプレッドは別であり
毎回どちらも変更(社員向けを変更しコピペでアルバイト用も変更している)ためその手間をなくしたいと思い
IMPORTRANGEというものを調べて知り作成しようとしたが、
私の作るシフトは
・部署ごとで色を変えたりシフト変更があった場合に色をわかりやすく変えている
・メンバーの入れ替わりがあったりするので行や列を増やしたり減らしたりすることがある
それも一緒に変更したいと思っています。
●発生している問題・エラーメッセージ・該当のソースコード・自分で調べて試したこと
似た質問を参照(https://teratail.com/questions/l5jrco4fe1ckyl)に実行をしてみましたが、
function onEdit() { autoCopy(); } function autoCopy() { // スプレッドシートを取得 const ss = SpreadsheetApp.getActiveSpreadsheet(); // 原本(コピー元)のデータのある全範囲を取得 const originalSheet = ss.getSheetByName('コピー元'); const originalRange = originalSheet.getDataRange(); const lastRow = originalSheet.getLastRow(); const lastCol = originalSheet.getLastColumn(); // コピー先とデータを出力する範囲を取得 const targetSheet = ss.getSheetByName('コピー先'); const targetRange = targetSheet.getRange(1, 1, lastRow, lastCol); // 値と書式をコピー originalRange.copyTo(targetRange); }
を実行
【エラーメッセージ】
TypeError: Cannot read properties of null (reading 'getDataRange')
autoCopy @ コード.gs:11
onEdit @ コード.gs:2
がでてきて実行できません。
知識がなくエラーに対する是正ができずに困っています。
●また、可能であれば
シートを1月から12月まで12個作るためシートも新しく作成するとコピー側も作られて同様の編集が行えれていると尚嬉しいです。
●上記の事でできない場合
・指定したメンバー以外(アルバイト)はシートを開けないようにする方法が知りたいです。
・シートの中でも表示される場所を固定できるのであれば、アルバイトには見えない範囲を作りたい。
補足
・社員が閲覧できるスプレッドをA、アルバイトが閲覧できるスプレッドをBで記載していただけると嬉しいです!
・アルバイトに共有するスプレッドの内容はシフトのシートはそのまますべてを共有して、別のシートに有給の残量だったり個人情報が書いてあるため分けたい or シートを表示できるメンバーが限れるのであれば限りたいです。
回答1件
あなたの回答
tips
プレビュー