Google表单电子表格更新脚本

时间:2015-03-11 20:12:40

标签: google-apps-script google-sheets google-spreadsheet-api google-form

我的表单中有一些代码可以很好地通过电子邮件发送费用报表管理员进行审批,并收到一个URL,其中包含将响应发送回填写表单信息的人员所需的信息

我现在需要做的就是用正确的批准信息更新表格中的字段(接受或拒绝)

我认为这必须在doGet方法中发生,但我是否必须传递更多的行号和批准消息才能完成此操作? (例如,获取电子表格,获取表格等)

这是我到目前为止所做的,两封电子邮件和生成的网址似乎都是正确的:

function sendEmail(e){
  /**
 var email = e.values[1];
 var item = e.values[2]; 
 var cost = e.values[3];
  */
  var serviceInformation = e.values[1];
  var language = e.values[2];
  var meetingType = e.values[3];
  var eventDate = e.values[4];
  var clientName = e.values[5];
  var detailedDirections = e.values[6];
  var onSitePOCName = e.values[7];
  var onSitePOCNumber = e.values[8];
  var department = e.values[9];
  var contactPhoneNumber = e.values[10];
  var approval = e.values[11];  //the one we need to modify
  var requestorEmail = e.values[12];
  var managerEmail = e.values[13];
  var Language2 = e.values[14];
  var interpreterName = e.values[15];
  var interpreterAgency = e.values[16];
  var dateConformationSent = e.values[17];
  var specialNotes = e.values[18];
  var row = e.range.getRow();


  var url = 'https://script.google.com/a/macros/richmond.k12.va.us/s/AKfycbwuRr1boKTH0v1mprWmc7PE66_mQ_dmPE0lyWb7vkfiyW3pn31b/exec';


//add on the parameters to URL to send to the manager
  var approve = url + '?approval=true'+'&reply='+requestorEmail+'&row='+row;
  var reject = url + '?approval=false'+'&reply='+requestorEmail+'&row='+row;

      var html = "<HTML><body>"+
               "<h2>please review</h2><br />"
  +"<P>" + language +"  " + serviceInformation
  +"<p>" + meetingType+ "  on   "+ eventDate + "    for " +clientName
  +"<p>" + "Location: "+ department
  +"<p>" + "requester: "+ requestorEmail+ "  "+
    "<p>"+

    "<a href="+ approve +">Approve</a><br />"+
      "<p>"+

    "<a href=" +reject+">Reject</a><br />"+
              "</HTML></body>";


MailApp.sendEmail(managerEmail, "Approval Request", "what no html?",   {htmlBody: html});

}


function doGet(e){
  var params = JSON.stringify(e);
  return HtmlService.createHtmlOutput(params);


//added in an edit
var id = '1UzlJ6Uw12H5dGVcLz7ONp3Neehq1DL21hqZnrMx7mxs';
  var ss = SpreadsheetApp.openById(id);
   var sheet = ss.getActiveSheet();
   var column = 12; 
   var row = e.parameter.row;
   var approval_cell = sheet.getRange(row, column);
  Logger.log(row);
  Logger.log(ss);
  Logger.log(sheet);
  Logger.log(approval_cell);
 //logger logs the proper row.  SS = Spreadsheet,  sheet = sheet,  approval_cell = Range


  var aprovalResponce = (e.parameter.approval == 'true') ? 'Approved.' :  'Sorry, you need to reschedule';

//added values after aprovalResponce, in the email, they are both undefined.
  var msg = "Your manager said : " + aprovalResponce;
  var replyEmail = e.parameter.reply;

   //MailApp.sendEmail(replyEmail, "Approval Request", msg);

   //update the approval field

  //changed in edit
   if (e.parameter.approval == 'true') {
    approval_cell.setValue("APPROVED"+;
  } else {
    approval_cell.setValue("DENIED");
  }


  //send the actual email out
  MailApp.sendEmail(replyEmail, "Approval Request", msg);
}

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试更改电子表格中的批准值?如果是这样,我想这应该有效:

//update the approval field
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var column = 12; 
var row = e.parameter.row;
var approval_cell = sheet.getRange(row, column);

if (e.parameter.approval == 'true') {
    approval_cell.setValue("APPROVED");
} else {
    approval_cell.setValue("DECLINED");
}