前提・実現したいこと
現状と実現したい方法は以下になります。
勤怠管理用スプレッドシートがあり中に現在以下のシートがあります。
①Aシート-テンプレのシート
②Bシート-氏名(A列)、メールアドレス(B列)、各ユーザー用のスプレッドURL(C列)
②の各ユーザー用のスプシURLに①のコピーを作り、かつ編集権限を与えたいです。
検索して、それらしきもの2つを組み合わせて作りましたが、エラーが出ており、
原因がわからない状態です。
自分なりにわかるようにコードに説明を入れて調べていたのですが、詰まってしまい助言を頂けますと幸いです。
発生している問題・エラーメッセージ
エラーメッセージ
TypeError: copyList.getRange is not a function(行 12)
該当のソースコード
//☆Aシートがテンプレ、Bシートから編集権限やコピー先のスプレッドシートを指定すると宣言 function copy() { const curSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const templateSheet = curSpreadsheet.getSheetByName("Aシート");//Nameの変更必要あり const copyList = curSpreadsheet.getSheetByName("Bシート").getDataRange().getValues();//Nameの変更必要あり copyList.shift(); //ヘッダ行を捨てる copyList.forEach(function(element, index, array){ //forEachでループ。elementが1行分 //☆C列のスプシIDの先にAシートをコピー // Bシートのスプレッドシートの3列目からをtargetURLとしておく var row = 3; row <= 10; row++ var targetURL = copyList.getRange(row, 3).getValue(); if (targetURL == '') //セルが空白の場合はスキップ var strgoogle = 'https://docs.google.com/spreadsheets/d/'; //URLの固定部 var targetId = targetURL.replace(strgoogle, ''); //スプレッドシートのID部を取得 //ID指定でスプレッドシートを開き、指定のシートを取得 var targetSS = SpreadsheetApp.openById(targetId); // 上記で取得したシートを、そのスプレッドシートにコピー const copied =templateSheet.copyTo(targetSS); copied.setName("Aシート"); //デフォルトで「Aシートのコピー」とかになるのでリネーム //☆B列のメールアドレスの人へ編集権限を与える const users = element.slice(1).filter(String); // B列以降で文字になるやつだけフィルタ,URLでもIDでもOK file.addEditors(users);//B列の人に編集権限を与える ; })}
試したこと
自身で検索
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/26 04:39