前提・実現したいこと
GASで任意に割り当てた番号を指定して、その番号に紐付けされている情報をまとめた帳票を自動で作成するスクリプトを作成したいです。
【質問の内容】
製造現場での活用を目的としているものです。
スプレッドシートで作成したフォームに情報を記入し、
その情報をまとめたものを、『製造指示書』として同一ブック内でなく、別のフォームに出力したいと考えております。
事前情報を記入するフォームには複数種類の品目の製造情報を記入しますが、それぞれの品目に製造番号を割り振っています。
また、製造情報は同一行でまとめるようにし、複数行にならぬよう設定しております。
スプレッドシート上ではスクリプトが動いており、製造番号を指定して(製造番号を指定するセルに当該番号を打ち込み、スクリプトを割り振った図形をスクリプト開始ボタンとして設定しています)その製造番号に紐付けされた『製造指示書』を発行できるようにしたいです。
色々調べてもTextFinderに皆さん調べたいキーワードを打ち込んで設定しているのですが、
それを任意のセルに打ち込んだ情報を反映できるようにしたいです。
発生している問題・エラーメッセージ
特にエラーは出ておりませんが、番号を指定しても1番最初の製造番号のものの製造指示書が発行されるだけで、製造番号をしているセルの
製造番号を変更しても変化はありません。
【エラーメッセージ】
特には出ておらず、通常通り開始され、完了されてしまいます。
該当のソースコード
ソースコード:GAS(Google Apps Script)
function createReceipt2() {
var template = SpreadsheetApp.openById('******');
var sheet1 = SpreadsheetApp.getActiveSheet();
for(var i = 9; i <= 88; i++){
//データの作成
var manufacturingcode = sheet1.getRange(i, 1).getValue() //製造No.
var companyname = sheet1.getRange(i, 2).getValue() //顧客名
var section = sheet1.getRange(i, 3).getValue() //担当課
var name = sheet1.getRange(i, 4).getValue() //担当者名
var address = sheet1.getRange(i, 5).getValue() //住所
var tel = sheet1.getRange(i, 6).getValue() //電話番号
var fax = sheet1.getRange(i, 7).getValue() //FAX
var sendfor = sheet1.getRange(i, 8).getValue() //納品先名
var sendaddress = sheet1.getRange(i, 9).getValue() //納品先住所
var sendname = sheet1.getRange(i, 10).getValue() //納品先担当者名
var sendtel = sheet1.getRange(i, 11).getValue() //担当課
var raw1 = sheet1.getRange(i, 12).getValue() //原料名①
var raw1lot = sheet1.getRange(i, 13).getValue() //原料lot①
var raw1amount = sheet1.getRange(i, 14).getValue() //原料受け入れ量①
var raw1deliverymethod = sheet1.getRange(i, 15).getValue() //原料①納品方法
var raw1acceptday = sheet1.getRange(i, 16).getValue() //原料入荷日①
var raw2 = sheet1.getRange(i, 17).getValue() //原料名②
var raw2lot = sheet1.getRange(i, 18).getValue() //原料lot②
var raw2amount = sheet1.getRange(i, 19).getValue() //原料受け入れ量②
var raw2deliverymethod = sheet1.getRange(i, 20).getValue() //原料②納品方法
var raw2acceptday = sheet1.getRange(i, 21).getValue() //原料入荷日②
var raw3 = sheet1.getRange(i, 22).getValue() //原料名③
var raw3lot = sheet1.getRange(i, 23).getValue() //原料lot③
var raw3amount = sheet1.getRange(i, 24).getValue() //原料受け入れ量③
var raw3deliverymethod = sheet1.getRange(i, 25).getValue() //原料③納品方法
var raw3acceptday = sheet1.getRange(i, 26).getValue() //原料入荷日③
var raw4 = sheet1.getRange(i, 27).getValue() //原料名④
var raw4lot = sheet1.getRange(i, 28).getValue() //原料lot④
var raw4amount = sheet1.getRange(i, 29).getValue() //原料受け入れ量④
var raw4deliverymethod = sheet1.getRange(i, 30).getValue() //原料④納品方法
var raw4acceptday = sheet1.getRange(i, 31).getValue() //原料入荷日④
var raw5 = sheet1.getRange(i, 32).getValue() //原料名⑤
var raw5lot = sheet1.getRange(i, 33).getValue() //原料lot⑤
var raw5amount = sheet1.getRange(i, 34).getValue() //原料受け入れ量⑤
var raw5deliverymethod = sheet1.getRange(i, 35).getValue() //原料⑥納品方法
var raw5acceptday = sheet1.getRange(i, 36).getValue() //原料入荷日⑥
var product1 = sheet1.getRange(i, 37).getValue() //製品名①
var product1lot = sheet1.getRange(i, 38).getValue() //製品lot①
var product1deliverymethod = sheet1.getRange(i, 39).getValue() //製品①出荷方法
var product1standard = sheet1.getRange(i, 40).getValue() //製品①規格
var product2 = sheet1.getRange(i, 41).getValue() //製品名②
var product2lot = sheet1.getRange(i, 42).getValue() //製品lot②
var product2deliverymethod = sheet1.getRange(i, 43).getValue() //製品②出荷方法
var product2standard = sheet1.getRange(i, 44).getValue() //製品②規格
var product3 = sheet1.getRange(i, 45).getValue() //製品名③
var product3lot = sheet1.getRange(i, 46).getValue() //製品lot③
var product3deliverymethod = sheet1.getRange(i, 47).getValue() //製品③出荷方法
var product3standard = sheet1.getRange(i, 48).getValue() //製品③規格
var product4 = sheet1.getRange(i, 49).getValue() //製品名④
var product4lot = sheet1.getRange(i, 50).getValue() //製品lot④
var product4deliverymethod = sheet1.getRange(i, 51).getValue() //製品④出荷方法
var product4standard = sheet1.getRange(i, 52).getValue() //製品④規格
var product5 = sheet1.getRange(i, 53).getValue() //製品名⑤
var product5lot = sheet1.getRange(i, 54).getValue() //製品lot⑤
var product5deliverymethod = sheet1.getRange(i, 55).getValue() //製品⑤出荷方法
var product5standard = sheet1.getRange(i, 56).getValue() //製品⑤規格
var manufacturingdaycode = sheet1.getRange(i, 57).getValue() //粉砕日コード
var manufacturingday = sheet1.getRange(i,58).getValue() //粉砕日
var packingday = sheet1.getRange(i, 59).getValue() //梱包日
var shipday = sheet1.getRange(i, 60).getValue() //出荷日
var machieneno = sheet1.getRange(i, 61).getValue() //粉砕機
var analysis = sheet1.getRange(i, 62).getValue() //分析方法
var wetanalysis = sheet1.getRange(i, 63).getValue() //水分分析
var otheranalysis = sheet1.getRange(i, 64).getValue() //その他分析
var notice = sheet1.getRange(i, 65).getValue() //特記事項
var range = sheet1.getRange("A9:BM");
range.sort([{column: 1, ascending: true}]);
var targetRenge = sheet1.getRange("A9:A88");
targetRenge.activate();
var finder = targetRenge.createTextFinder("B4").useRegularExpression(false).matchEntireCell(true);
var ranges = finder.findAll();
//起動する雛形の名前
var ssName = ''+ manufacturingdaycode +'製造依頼書(' + companyname + ')';
var sheet = template.copy(ssName).getSheetByName('製造依頼書');
//データを転記
sheet.getRange('B9').setValue(companyname);
sheet.getRange('B10').setValue(section);
sheet.getRange('B11').setValue(name);
sheet.getRange('B12').setValue(address);
sheet.getRange('B13').setValue(tel);
sheet.getRange('B14').setValue(fax);
sheet.getRange('B16').setValue(sendfor);
sheet.getRange('B17').setValue(sendaddress);
sheet.getRange('B18').setValue(sendname);
sheet.getRange('B19').setValue(sendtel);
sheet.getRange('B22').setValue(raw1);
sheet.getRange('D22').setValue(raw1lot);
sheet.getRange('F22').setValue(raw1amount);
sheet.getRange('I22').setValue(raw1deliverymethod);
sheet.getRange('K22').setValue(raw1acceptday);
sheet.getRange('B23').setValue(raw2);
sheet.getRange('D23').setValue(raw2lot);
sheet.getRange('F23').setValue(raw2amount);
sheet.getRange('I23').setValue(raw2deliverymethod);
sheet.getRange('K23').setValue(raw2acceptday);
sheet.getRange('B24').setValue(raw3);
sheet.getRange('D24').setValue(raw3lot);
sheet.getRange('F24').setValue(raw3amount);
sheet.getRange('I24').setValue(raw3deliverymethod);
sheet.getRange('K24').setValue(raw3acceptday);
sheet.getRange('B25').setValue(raw4);
sheet.getRange('D25').setValue(raw4lot);
sheet.getRange('F25').setValue(raw4amount);
sheet.getRange('I25').setValue(raw4deliverymethod);
sheet.getRange('K25').setValue(raw4acceptday);
sheet.getRange('B26').setValue(raw5);
sheet.getRange('D26').setValue(raw5lot);
sheet.getRange('F26').setValue(raw5amount);
sheet.getRange('I26').setValue(raw5deliverymethod);
sheet.getRange('K26').setValue(raw5acceptday);
sheet.getRange('B29').setValue(product1);
sheet.getRange('D29').setValue(product1lot);
sheet.getRange('F29').setValue(product1deliverymethod);
sheet.getRange('H29').setValue(product1standard);
sheet.getRange('B30').setValue(product2);
sheet.getRange('D30').setValue(product2lot);
sheet.getRange('F30').setValue(product2deliverymethod);
sheet.getRange('H30').setValue(product2standard);
sheet.getRange('B31').setValue(product3);
sheet.getRange('D31').setValue(product3lot);
sheet.getRange('F31').setValue(product3deliverymethod);
sheet.getRange('H31').setValue(product3standard);
sheet.getRange('B32').setValue(product4);
sheet.getRange('D32').setValue(product4lot);
sheet.getRange('F32').setValue(product4deliverymethod);
sheet.getRange('H32').setValue(product4standard);
sheet.getRange('B33').setValue(product5);
sheet.getRange('D33').setValue(product5lot);
sheet.getRange('F33').setValue(product5deliverymethod);
sheet.getRange('H33').setValue(product5standard);
sheet.getRange('B35').setValue(manufacturingday);
sheet.getRange('B36').setValue(packingday);
sheet.getRange('B37').setValue(shipday);
sheet.getRange('B38').setValue(machieneno);
sheet.getRange('B40').setValue(analysis);
sheet.getRange('B41').setValue(wetanalysis);
sheet.getRange('B42').setValue(otheranalysis);
sheet.getRange('A45').setValue(notice);
}
}
試したこと
TextFinderの記載箇所(行)を替えたり、繰り返しのforを使ったり迷走しています。
ただ、TextFinderを外すと、forの繰り返しが走るため、88枚の製造指示書が一気に発行されてしまします。
補足情報(FW/ツールのバージョンなど)
・GAS(Google Apps Script)
・スプレッドシート
全くの初心者の質問で申し訳有りませんが、ご教授いただけますと幸甚です。
あなたの回答
tips
プレビュー