各営業担当の成績とお客様からのコメントをそれぞれのシートに反映したいです。
このような流れで反映を考えています。
①コピー元データのシート3行目に担当の名前、4行目に担当地域が記載してあり、
3行目を元に各担当のシートを作成しています。
【作成方法】
元になるフィードバックシートをコピーし、それぞれの担当者の名前が自動でスプレットシートのタブ名が担当者になります。
<コピー元データのシート>
|||A列|B列|C列|D列|E列|F列|G列|H列|I列
|:--|:--|:--:|--:||:--|:--:|--:|
|1行目|回答者|Aさん|||Bさん|||Cさん|||
|2行目||第2地域|||第3地域|||第4地域|||
|3行目||満足度|獲得数|コメント|満足度|獲得数|コメント|満足度|獲得数|コメント|
|4行目|佐々木さん|8|9||||||
|5行目|佐藤さん|10|11|親切な対応|10|10|話し上手||
|6行目|中村さん|10|11||9|10|||
|7行目|林さん|||||||5|7|連絡が早い|
|8行目|柴咲さん|||||||5|7||
②それぞれの担当者にデータを反映する。
※担当者のシートに転機するのは三行ずつです。
※コメントがない物もありますが、満足度と獲得数は必ず入力されています。
そのため、満足度が入っているセルからそれぞれコピーしたいです。
例.Aさんの場合はA4からC6までのデータをそのまま反映したいです。
Cさんの場合はG7からI8までのデータをそのまま反映したいです。
転機するシート
Aさんの場合
A列 | B列 | C列 |
---|---|---|
Aさんのフィードバックシート | ||
満足度 | 獲得数 | コメント |
8 | 9 | |
10 | 11 | 親切 |
10 | 11 |
上記のような形で、BさんもCさんの分もそれぞれ転機したいです。
①の作業まではなんとかできましたが、②が全く進みません。
セルの長さと横の長さを取得したり、offsetを使って見ましたが、うまく行きませんでした。
4日ほど色々試したのですが、うまくいかず悩んでいます。
教えて頂けますと幸いでございます。
よろしくお願い致します。
作成したスクリプト
function CreateCommentsheet(){ Createsheet(); Copydata(); } function Createsheet() { var folderId = '格納先';//格納先 var spreadsheetId = '転機するシートのマスターのスプレッドシート';//マスターのシート取得 var folder = DriveApp.getFolderById(folderId); var file = DriveApp.getFileById(spreadsheetId); var ss = SpreadsheetApp.getActiveSpreadsheet(); var mySheet = ss.getSheetByName('シート1'); //スプレッドシートのシートを取得 var fileName = "営業担当のコメントシート"; //ファイル名変更 //新しく作成したシートのIDを取得してセルに貼り付けるコード等を書いていますが、 //長くなるため、削除しています。 } function Copydata() { var ss_copyFrom = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss_copyFrom.getSheetByName('シート1'); var strURL= sheet.getRange(1,15).getValue() var ss_copyTo = SpreadsheetApp.openById(strURL); // 書出シートの作成 var ss_sheet_temp = ss_copyTo.getSheetByName("マスターシート"); var lastColomn = ss_copyFrom.getLastColumn(); var lastRow = ss_copyFrom.getLastRow();//最終行を取得 for(var j=2;j<=lastColomn;j++){ var range = sheet.getRange(1,j); var value = range.getDisplayValue(); if(value!= ""){ var SName = sheet.getRange(1,j).getValue(); //担当名 var AreaName = sheet.getRange(2,j).getValue(); //地域名 // データとファイル名の変更 var ss_sheet_copy = ss_sheet_temp.copyTo(ss_copyTo); // 作成後のファイル名に使用する名前を決める。変えたい場合はここで変更 var name = SName + "_" + AreaName var NewNameSheet = ss_sheet_copy.setName(name);//シートの名前を変更 // ★ここから②になりますデータ書き換え } }