基于google工作表中的多行循环脚本

时间:2018-06-11 14:51:48

标签: google-apps-script

我是老师,他正在努力为我们的员工更快地制作日常文件。我创建了一个谷歌工作表,将信息从细胞行嵌入谷歌文档。我想找出一种方法,当我运行脚本时,它将为每一行运行它并将所有它收集到pdf上,这样我就可以同时打印多个学生的数据。

关于如何使这项工作的任何想法?我目前拥有的脚本如下所示,它适用于一行。

//Create the Menu

function onOpen() {
var menuEntries = [ {name: "ALE", functionName: "CreatePDF"}];
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.addMenu("Generate my Monthly Narrative", menuEntries);
}

function CreatePDF() {
var sleepINT = 500;
var templateid = "10rmEYtoWlDd1z0QLh9GcBn7d0CKH-7m6sE9FmKSXEuI";
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.toast("YOU LOVE ALE...YOU LOVE ALE... YOU LOVE ALE");
Utilities.sleep(sleepINT);
var sheet = ss.getActiveSheet();
var data = sheet.getRange(4,1,sheet.getLastRow()-1, 
sheet.getLastColumn()).getValues();
//    var data = sheet.getRange(4,1,1,sheet.getLastColumn()).getValues();
//var month = sheet.getRange(4,1,1,111).getValues();
//  var month = sheet.getRange(4,5).getValues();
ss.toast("Thank you. Your ALE is processing!");
Utilities.sleep(sleepINT);


for (var i in data) {
var row = data[i];
// setting up the temporary document
var docid = DriveApp.getFileById(templateid).makeCopy().getId();
var doc = DocumentApp.openById(docid);
var body = doc.getBody();

// setting the variables to use in the document
var boxChecked = "☑";
var boxEmpty = "☐";
var studentName = row[0];
var emailAddress = row[1];
var grade = row[2];
var trimester = row[3];
var month = row[4];
var time = row[5];
var weekEnded1 = Utilities.formatDate(row[6], "PDT", 'MM/dd/YYYY');
var todayDate1 = Utilities.formatDate(row[7], "PDT", 'MM/dd/YYYY');
var face1; if ( row[8] === true ) { face1 = boxChecked } else { face1 = boxEmpty }; 
var phone1; if ( row[9] === true ) { phone1 = boxChecked } else { phone1 = boxEmpty }; 
var interElectronic1; if ( row[10] === true ) { interElectronic1 = boxChecked } else { interElectronic1 = boxEmpty }; 
var notAble1; if ( row[11] === true ) { notAble1 = boxChecked } else { notAble1 = boxEmpty }; 
var attendedClass1; if ( row[12] === true ) { attendedClass1 = boxChecked } else { attendedClass1 = boxEmpty };
var testing1; if ( row[13] === true ) { testing1 = boxChecked } else { testing1 = boxEmpty };
var instruction1; if ( row[14] === true ) { instruction1 = boxChecked } else { instruction1 = boxEmpty };
var learningActivity1; if ( row[15] === true ) { learningActivity1 = boxChecked } else { learningActivity1 = boxEmpty };
var reviewAssignments1; if ( row[16] === true ) { reviewAssignments1 = boxChecked } else { reviewAssignments1 = boxEmpty };
var reportingprogress1; if ( row[17] === true ) { reportingprogress1 = boxChecked } else { reportingprogress1 = boxEmpty };
var status1 = row[18];
var comment1 = row[19];
var weekEnded2 = Utilities.formatDate(row[20], "PDT", 'MM/dd/YYYY');
var todayDate2 = Utilities.formatDate(row[21], "PDT", 'MM/dd/YYYY');
var face2; if ( row[22] === true ) { face2 = boxChecked } else { face2 = boxEmpty }; 
var phone2; if ( row[23] === true ) { phone2 = boxChecked } else { phone2 = boxEmpty }; 
var interElectronic2; if ( row[24] === true ) { interElectronic2 = boxChecked } else { interElectronic2 = boxEmpty }; 
var notAble2; if ( row[25] === true ) { notAble2 = boxChecked } else { notAble2 = boxEmpty }; 
var attendedClass2; if ( row[26] === true ) { attendedClass2 = boxChecked } else { attendedClass2 = boxEmpty };
var testing2; if ( row[27] === true ) { testing2 = boxChecked } else { testing2 = boxEmpty };
var instruction2; if ( row[28] === true ) { instruction2 = boxChecked } else { instruction2 = boxEmpty };
var learningActivity2; if ( row[29] === true ) { learningActivity2 = boxChecked } else { learningActivity2 = boxEmpty };
var reviewAssignments2; if ( row[30] === true ) { reviewAssignments2 = boxChecked } else { reviewAssignments2 = boxEmpty };
var reportingprogress2; if ( row[31] === true ) { reportingprogress2 = boxChecked } else { reportingprogress2 = boxEmpty };
var status2 = row[32];
var comment2 = row[33];
var weekEnded3 = Utilities.formatDate(row[34], "PDT", 'MM/dd/YYYY');
var todayDate3 = Utilities.formatDate(row[35], "PDT", 'MM/dd/YYYY');
var face3; if ( row[36] === true ) { face3 = boxChecked } else { face3 = boxEmpty }; 
var phone3; if ( row[37] === true ) { phone3 = boxChecked } else { phone3 = boxEmpty }; 
var interElectronic3; if ( row[38] === true ) { interElectronic3 = boxChecked } else { interElectronic3 = boxEmpty }; 
var notAble3; if ( row[39] === true ) { notAble3 = boxChecked } else { notAble3 = boxEmpty }; 
var attendedClass3; if ( row[40] === true ) { attendedClass3 = boxChecked } else { attendedClass3 = boxEmpty };
var testing3; if ( row[41] === true ) { testing3 = boxChecked } else { testing3 = boxEmpty };
var instruction3; if ( row[42] === true ) { instruction3 = boxChecked } else { instruction3 = boxEmpty };
var learningActivity3; if ( row[43] === true ) { learningActivity3 = boxChecked } else { learningActivity3 = boxEmpty };
var reviewAssignments3; if ( row[44] === true ) { reviewAssignments3 = boxChecked } else { reviewAssignments3 = boxEmpty };
var reportingprogress3; if ( row[45] === true ) { reportingprogress3 = boxChecked } else { reportingprogress3 = boxEmpty };
var status3 = row[46];
var comment3 = row[47];
var weekEnded4 = Utilities.formatDate(row[48], "PDT", 'MM/dd/YYYY');
var todayDate4 = Utilities.formatDate(row[49], "PDT", 'MM/dd/YYYY');
var face4; if ( row[50] === true ) { face4 = boxChecked } else { face4 = boxEmpty }; 
var phone4; if ( row[51] === true ) { phone4 = boxChecked } else { phone4 = boxEmpty }; 
var interElectronic4; if ( row[52] === true ) { interElectronic4 = boxChecked } else { interElectronic4 = boxEmpty }; 
var notAble4; if ( row[53] === true ) { notAble4 = boxChecked } else { notAble4 = boxEmpty }; 
var attendedClass4; if ( row[54] === true ) { attendedClass4 = boxChecked } else { attendedClass4 = boxEmpty };
var testing4; if ( row[55] === true ) { testing4 = boxChecked } else { testing4 = boxEmpty };
var instruction4; if ( row[56] === true ) { instruction4 = boxChecked } else { instruction4 = boxEmpty };
var learningActivity4; if ( row[57] === true ) { learningActivity4 = boxChecked } else { learningActivity4 = boxEmpty };
var reviewAssignments4; if ( row[58] === true ) { reviewAssignments4 = boxChecked } else { reviewAssignments4 = boxEmpty };
var reportingprogress4; if ( row[59] === true ) { reportingprogress4 = boxChecked } else { reportingprogress4 = boxEmpty };
var status4 = row[60];
var comment4 = row[61];
var weekEnded5 = Utilities.formatDate(row[62], "PDT", 'MM/dd/YYYY');
var todayDate5 = Utilities.formatDate(row[63], "PDT", 'MM/dd/YYYY');
var face5; if ( row[64] === true ) { face5 = boxChecked } else { face5 = boxEmpty }; 
var phone5; if ( row[65] === true ) { phone5 = boxChecked } else { phone5 = boxEmpty }; 
var interElectronic5; if ( row[66] === true ) { interElectronic5 = boxChecked } else { interElectronic5 = boxEmpty }; 
var notAble5; if ( row[67] === true ) { notAble5 = boxChecked } else { notAble5 = boxEmpty }; 
var attendedClass5; if ( row[68] === true ) { attendedClass5 = boxChecked } else { attendedClass5 = boxEmpty };
var testing5; if ( row[69] === true ) { testing5 = boxChecked } else { testing5 = boxEmpty };
var instruction5; if ( row[70] === true ) { instruction5 = boxChecked } else { instruction5 = boxEmpty };
var learningActivity5; if ( row[71] === true ) { learningActivity5 = boxChecked } else { learningActivity5 = boxEmpty };
var reviewAssignments5; if ( row[72] === true ) { reviewAssignments5 = boxChecked } else { reviewAssignments5 = boxEmpty };
var reportingprogress5; if ( row[73] === true ) { reportingprogress5 = boxChecked } else { reportingprogress5 = boxEmpty };
var status5 = row[74];
var comment5 = row[75];
var date = Utilities.formatDate(row[76], "PDT", 'MM/dd/YYYY');
var className1 = row[77]
var percent1; if (row[78] === "" ) {percent1 = ""} else {percent1 = row[78] * 100 + "%"};
var grade1 = row[79];
var missing1 = row[80];
var content1 = row[81];
var className2 = row[82]
var percent2; if (row[83] === "" ) {percent2 = ""} else {percent2 = row[83] * 100 + "%"};
var grade2 = row[84];
var missing2 = row[85];
var content2 = row[86];
var className3 = row[87]
var percent3; if (row[88] === "" ) {percent3 = ""} else {percent3 = row[88] * 100 + "%"};
var grade3 = row[89];
var missing3 = row[90];
var content3 = row[91];
var className4 = row[92]
var percent4; if (row[93] === "" ) {percent4 = ""} else {percent4 = row[93] * 100 + "%"};
var grade4 = row[94];
var missing4 = row[95];
var content4 = row[96];
var className5 = row[97]
var percent5; if (row[98] === "" ) {percent5 = ""} else {percent5 = row[98] * 100 + "%"};
var grade5 = row[99];
var missing5 = row[100];
var content5 = row[101];
var className6 = row[102]
var percent6; if (row[103] === "" ) {percent6 = ""} else {percent6 = row[103] * 100 + "%"};
var grade6 = row[104];
var missing6 = row[105];
var content6 = row[106];
var attendance = row[107];
var behavior = row[108];
var comments = row[109];
var overall = row[110];

body.replaceText('keystudentname', studentName);
body.replaceText("keygradelevel", grade);
body.replaceText("keytrimester", trimester);
body.replaceText("keymonth", month);
body.replaceText("keytime", time);
body.replaceText("keyweekend1", weekEnded1);
body.replaceText("keytodaydate1", todayDate1);
body.replaceText("keyf1", face1);
body.replaceText("keyp1", phone1);
body.replaceText("keyie1", interElectronic1);
body.replaceText("keyna1", notAble1);
body.replaceText("keyac1", attendedClass1);
body.replaceText("keyt1", testing1);
body.replaceText("keyi1", instruction1);
body.replaceText("keyla1", learningActivity1);
body.replaceText("keyra1", reviewAssignments1);
body.replaceText("keyrp1", reportingprogress1);
body.replaceText("keystatus1", status1);
body.replaceText("keycomment1", comment1);
body.replaceText("keyweekend2", weekEnded2);
body.replaceText("keytodaydate2", todayDate2);
body.replaceText("keyf2", face2);
body.replaceText("keyp2", phone2);
body.replaceText("keyie2", interElectronic2);
body.replaceText("keyna2", notAble2);
body.replaceText("keyac2", attendedClass2);
body.replaceText("keyt2", testing2);
body.replaceText("keyi2", instruction2);
body.replaceText("keyla2", learningActivity2);
body.replaceText("keyra2", reviewAssignments2);
body.replaceText("keyrp2", reportingprogress2);
body.replaceText("keystatus2", status2);
body.replaceText("keycomment2", comment2);    
body.replaceText("keyweekend3", weekEnded3);
body.replaceText("keytodaydate3", todayDate3);
body.replaceText("keyf3", face3);
body.replaceText("keyp3", phone3);
body.replaceText("keyie3", interElectronic3);
body.replaceText("keyna3", notAble3);
body.replaceText("keyac3", attendedClass3);
body.replaceText("keyt3", testing3);
body.replaceText("keyi3", instruction3);
body.replaceText("keyla3", learningActivity3);
body.replaceText("keyra3", reviewAssignments3);
body.replaceText("keyrp3", reportingprogress3);
body.replaceText("keystatus3", status3);
body.replaceText("keycomment3", comment3);
body.replaceText("keyweekend4", weekEnded4);
body.replaceText("keytodaydate4", todayDate4);
body.replaceText("keyf4", face4);
body.replaceText("keyp4", phone4);
body.replaceText("keyie4", interElectronic4);
body.replaceText("keyna4", notAble4);
body.replaceText("keyac4", attendedClass4);
body.replaceText("keyt4", testing4);
body.replaceText("keyi4", instruction4);
body.replaceText("keyla4", learningActivity4);
body.replaceText("keyra4", reviewAssignments4);
body.replaceText("keyrp4", reportingprogress4);
body.replaceText("keystatus4", status4);
body.replaceText("keycomment4", comment4);     
body.replaceText("keyweekend5", weekEnded5);
body.replaceText("keytodaydate5", todayDate5);
body.replaceText("keyf5", face5);
body.replaceText("keyp5", phone5);
body.replaceText("keyie5", interElectronic5);
body.replaceText("keyna5", notAble5);
body.replaceText("keyac5", attendedClass5);
body.replaceText("keyt5", testing5);
body.replaceText("keyi5", instruction5);
body.replaceText("keyla5", learningActivity5);
body.replaceText("keyra5", reviewAssignments5);
body.replaceText("keyrp5", reportingprogress5);
body.replaceText("keystatus5", status5);
body.replaceText("keycomment5", comment5);    
body.replaceText("keydate", date);
body.replaceText("keyclass1", className1);
body.replaceText("keypercent1", percent1);
body.replaceText("keygrade1", grade1);
body.replaceText("keymissing1", missing1);
body.replaceText("keycontent1", content1);
body.replaceText("keyclass2", className2);
body.replaceText("keypercent2", percent2);
body.replaceText("keygrade2", grade2);
body.replaceText("keymissing2", missing2);
body.replaceText("keycontent2", content2);
body.replaceText("keyclass3", className3); 
body.replaceText("keypercent3", percent3);
body.replaceText("keygrade3", grade3);
body.replaceText("keymissing3", missing3);
body.replaceText("keycontent3", content3);
body.replaceText("keyclass4", className4);
body.replaceText("keypercent4", percent4);
body.replaceText("keygrade4", grade4);
body.replaceText("keymissing4", missing4);
body.replaceText("keycontent4", content4);
body.replaceText("keyclass5", className5); 
body.replaceText("keypercent5", percent5);
body.replaceText("keygrade5", grade5);
body.replaceText("keymissing5", missing5);
body.replaceText("keycontent5", content5);
body.replaceText("keyclass6", className6); 
body.replaceText("keypercent6", percent6);
body.replaceText("keygrade6", grade6);
body.replaceText("keymissing6", missing6);
body.replaceText("keycontent6", content6);
body.replaceText("keyattendance", attendance);
body.replaceText("keybehavior", behavior);
body.replaceText("keycomments", comments);
body.replaceText("keyoverall", overall);

ss.toast("Creating your ALE document");
Utilities.sleep(sleepINT);


var file = DriveApp.getFileById(doc.getId());
var newfolder = DriveApp.getFolderById("1oQ8evDj8dlHoDdX01DvZqjcIkSq31oen");
var oldfolder = DriveApp.getFolderById("1IzY9PiobBC-O87AxCkU32j2n2wUU1zUE");
newfolder.addFile(file);
oldfolder.removeFile(file);

ss.toast("PDF has been created!");
Utilities.sleep(sleepINT);

var usernamefordoctitle = sheet.getRange(4,1,1,1).getValues()
var name = doc.getName();
doc.setName(month + " ALE for " + studentName);
ss.toast("Document has been named");
Utilities.sleep(sleepINT);

doc.saveAndClose();
var pdffolder = DriveApp.getFolderById ("1iwBEUZpFwz_eaCVKemYozF5FA0_t0YGv");
var pdfFILE = DriveApp.getFileById(doc.getId()).getAs('application/pdf');
pdfFILE.setName(doc.getName() + ".pdf");
var theFile = DriveApp.createFile(pdfFILE);
pdffolder.addFile(theFile);
ss.toast("Document has been saved to Google Drive");
Utilities.sleep(sleepINT);

var pdfEMAIL = 
DriveApp.getFileById(doc.getId()).getAs('application/pdf').getBytes();
var message = "This is your" + month + "ALE documents for your AG student."
var emailTo = emailAddress;
var subject = "Your " + month + " ALE for " + studentName + " ";
var message = "The attached pdf document is your " + month + " monthly ALE document for " + studentName + ".";

MailApp.sendEmail(emailTo, subject, message, {attachments: pdfFILE});
ss.toast("Email has been sent");
Utilities.sleep(sleepINT);
ss.toast(" FINISHED!!!! ");
}}

0 个答案:

没有答案