如何从Google电子表格中的自定义菜单项运行功能?

时间:2015-05-28 14:46:17

标签: google-apps-script google-sheets

我已经成功创建了一个自定义菜单项,我想用它来运行" createDocument"函数在下面的脚本中。这可能很简单,但我找不到一个示例,告诉我如何在menuItem1中调用该函数。非常感谢你提前!我的脚本如下:



function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Run Script')
      .addItem('Create Certs', 'menuItem1')
      .addToUi();
}

function menuItem1() {
//need help here!
}

//Creates the certs
function createDocument(firstname, lastname, course, date) {
  
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = Browser.inputBox("Enter Start Row");
  var numRows = Browser.inputBox("Enter number of Rows to merge");
  var dataRange = sheet.getRange(startRow, 1, numRows, 7);
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var date = row[0];
    var nic = row[1];
    var course = row[2];
    var lastname = row[3];
    var firstname = row[4];
    var middle = row[5]
    var email = row[6];
    var docname = lastname+" "+nic+" PME Cert";
    var subjectTxt = "NWC "+ course +" Online PME Course Certificate";
    var fullBody = "PME COURSE COMPLETION CERTIFICATE" + "\n\n";
      fullBody += "Your " + course + " course completion certificate is attached." + "\n\n";
      fullBody += "Regards," + "\n\n";
      fullBody += "Professor Steve Pierce" + "\n";
      fullBody += "U.S. Naval War College "+ "\n";
      fullBody += "Online PME Program Team" + "\n\n";
      fullBody += "Learn more about NWC's Online PME Program at the link below:" + "\n";
      fullBody += "http://www.usnwc.edu/Academics/College-of-Distance-Education/PME-(1).aspx" + "\n";
    
    var docId = DriveApp
     .getFileById("1CjdoldpJmPskkqStpmBk3dRznFyURgY5mMsfVHfIGz4")
     .makeCopy(docname).getId();
  
    var doc = DocumentApp.openById(docId);
  
    var body = doc.getActiveSection();
    body.replaceText('fname', firstname);
    body.replaceText('lname', lastname);
    body.replaceText('midname', middle);
    body.replaceText('course', course);
    body.replaceText('date', date);    
    doc.saveAndClose();
    
    
    MailApp.sendEmail(email, subjectTxt, fullBody, {attachments: doc.getAs("application/pdf")});
    
    SpreadsheetApp.flush ();
    DriveApp.getFileById(docId).setTrashed(true);
    //return doc;
  }
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

&#13;
&#13;
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Run Script')
      .addItem('Create Certs', 'menuItem1')
      .addToUi();
}
 //nest the createDocument function within the menuItem1 function
function menuItem1() {
   function createDocument(firstname, lastname, course, date) {
}
//the createDocument function used to be here (moved to line 9)
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = Browser.inputBox("Enter Start Row");
  var numRows = Browser.inputBox("Enter number of Rows to merge");
  var dataRange = sheet.getRange(startRow, 1, numRows, 7);
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var date = row[0];
    var nic = row[1];
    var course = row[2];
    var lastname = row[3];
    var firstname = row[4];
    var middle = row[5]
    var email = row[6];
    var docname = lastname+" "+nic+" PME Cert";
    var subjectTxt = "NWC "+ course +" Online PME Course Certificate";
    var fullBody = "PME COURSE COMPLETION CERTIFICATE" + "\n\n";
      fullBody += "Your " + course + " course completion certificate is attached." + "\n\n";
      fullBody += "Regards," + "\n\n";
      fullBody += "Professor Steve Pierce" + "\n";
      fullBody += "U.S. Naval War College "+ "\n";
      fullBody += "Online PME Program Team" + "\n\n";
      fullBody += "Learn more about NWC's Online PME Program at the link below:" + "\n";
      fullBody += "http://www.usnwc.edu/Academics/College-of-Distance-Education/PME-(1).aspx" + "\n";
    
    var docId = DriveApp
     .getFileById("1CjdoldpJmPskkqStpmBk3dRznFyURgY5mMsfVHfIGz4")
     .makeCopy(docname).getId();
  
    var doc = DocumentApp.openById(docId);
  
    var body = doc.getActiveSection();
    body.replaceText('fname', firstname);
    body.replaceText('lname', lastname);
    body.replaceText('midname', middle);
    body.replaceText('course', course);
    body.replaceText('date', date);    
    doc.saveAndClose();
    
    
    MailApp.sendEmail(email, subjectTxt, fullBody, {attachments: doc.getAs("application/pdf")});
    
    SpreadsheetApp.flush ();
    DriveApp.getFileById(docId).setTrashed(true);
    //return doc;
  }
}
&#13;
&#13;
&#13;