允许通过电子邮件回复对Google Spreadsheets进行第三方更新?

时间:2014-04-27 04:03:14

标签: email google-apps-script google-sheets google-form

我是Google Scripts的新手,所以请耐心等待。我在Google Script中构建了一个用户界面,可以在请求的几天内关闭用户输入,将信息存储在电子表格中并向主管发送电子邮件。目前,我正在将消息构建为一系列字符串,并通过电子邮件发送给主管。没问题。

我被要求允许主管回应请求(即批准或拒绝请求的链接或按钮)。响应应该保存在与原始请求相同的电子表格中,并且在批准的情况下,还应该访问第二个电子表格并更新员工应计小时数。

我的问题是,如何使用脚本完成此操作?我是否需要通过电子邮件发送自定义的Google表单而不是当前的短信,或者是否有办法通过Google Script执行此操作? (我之前没有使用过Google表单,因此不确定它的行为方式或者我当前项目的功能。)我已经研究了一个多星期,并且空白了。如果有人可以指导我阅读某些文档或有任何见解,我会非常感激!

谢谢!

1 个答案:

答案 0 :(得分:1)

  

我被要求允许主管回应请求(即批准或拒绝请求的链接或按钮)。

创建链接时,请在此网址上添加其他参数,其中包含employeeID,spreadsheetId和requestStatus等信息。其中一个网址可能如下所示:

https://script.google.com/macros/s/AKfycbwzwN5u3glvml0P1KoU5Q8snwwpvyGErikt_LPsvUn0hqznzC8/exec?id=201&ssId=1i6rFIliaIXjCWI7hkOkwlm_QBfY4ZiIf-Bbpscc6S2E&status=ACCEPTED

遵循此网址将导致您运行代码的单独的webapp:

function doGet(request) {
  Logger.log(request.parameters.id);

  var sheet = SpreadsheetApp.openById(request.parameters.ssId).getActiveSheet();
  var data = sheet.getDataRange().getValues();

  var user = request.parameters.id;
  var status = request.parameters.status;
  for (var i=1; i<data.length; i++) {
    if (data[i][0] == user[0]){
      sheet.getRange(i+1, 3,1,1).setValue(status[0]);
    }
  }
  var result = "Congratulations! You just said '" + status[0] + "' to " + user + ".";
  return ContentService.createTextOutput(result);
}

doGet()函数会读取网址的参数,然后使用其他参数数据更新带有来自网址参数id的ID的电子表格。

Here's a link to my setup.