单击电子邮件中的按钮以填充 Google 表格

2024-01-25

我被困住了,我以前做过类似的事情并且它有效,但这次我不断收到“抱歉,目前无法打开文件”。错误信息。

我想向一些参与者发送一封电子邮件,一旦他们点击电子邮件中的按钮,我的谷歌工作表将更新为一个简单的“是”,我的代码在下面,为了完整起见,我已经添加了所有内容,如果这都是a,我深表歉意有点多。

气体代码:

function sendChallengeEmail() {

  var url = 'https://script.google.com/macros/s/AKfycbzqVFeYC0O1PVHA051UxvrmdJgDJ9gyjhw5X7Lks6j5LGhmRpbCaRLVS38I--ySTLAS/exec'

  const ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1NbDbt3IzcXBcZeIa2_XERql4AxnUOQyZDvNRTiaNVXg/edit?pli=1#gid=1386761827");
  const challenges = ss.getSheetByName("Challenges");
  const responses = ss.getSheetByName("Responses");
  
  var challengesLen = challenges.getLastRow();
  var challenge = '';
  var challengeCol;
  var date = Utilities.formatDate(new Date, "GMT", "dd/MM/yyyy").toString();

  for (var i = 1; i <= challengesLen; i++) {
    if (challenges.getRange(i,1).getValue() == date) {
      challenge = challenges.getRange(i,2).getValue();
    }
  }

  for (var j = 1; j <= responses.getLastColumn(); j++) {
    if (responses.getRange(1,j).getValue() == challenge) {
      challengeCol = j;
    }
  }

  var day = challenge.split(" ")[1];
  Logger.log(challenge);
  Logger.log(challengeCol);

  var data = responses.getRange(2,1,responses.getLastRow()-1,13).getValues();
  
  data.forEach(function(row, i) {
    var participant = row[1];
    var participantEmail = row[2]
    var emailSent = row[challengeCol - 2];

    Logger.log(row);
    Logger.log(emailSent);
    Logger.log(challengeCol-1);

    if (emailSent == '') {
      Logger.log(emailSent);
      var emailSentCol = challengeCol - 1;
      var workingRow = i + 2;
    
      var submit = url + "?submit=Yes" + "&challenge=" + challenge + "&r=" + workingRow + "&c=" + challengeCol;
      var templ = HtmlService.createTemplateFromFile('emailBody');
      templ.participant = participant;
      templ.day = day;
      templ.challenge = challenge;
      templ.submit = submit;

      var message = templ.evaluate().getContent();

      MailApp.sendEmail({
        to: participantEmail,
        subject: "test",
        htmlBody: message
      });

      var d = new Date();
      responses.getRange(workingRow, emailSentCol).setValue(d);
    };
  });
}

function doGet(e) {
  var answer = e.parameter.submit;
  var workingRow = e.parameter.r;
  var workingCol = e.parameter.c;

  responses.getRange(workingRow, workingCol).setValue(answer);

  var app = HtmlService.createHtmlOutput("Thank you!")

  return app

}

HTML 代码:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <style>
    .button {
      border: blue;
      background-color: blue; 
      color: white;
      padding: 15px 32px;
      text-align: center;
      text-decoration: none;
      display: inline-block;
      font-size: 16px;
      margin: 4px 2px;
      cursor: pointer;
    }

    </style>
  </head>
  <body>

    <p>Hello <?= participant ?> </p>

    <p>You are now on Day <?= day ?> of the challenge!</p>

    <p>Today's challenge is:</p>

    <?= challenge ?>

    <p>Don't forget to submit once you have completed your challenge!</p>

    <a href = <?= submit ?> button id = "btn" onclick ="getElementById('btn').innerHTML='CONGRATULATIONS'" class="button">Challenge completed!</a>

    <p>And finally how about sharing an image of your challenge :)</p>

    <form>
      <label for = '"url " + <?= day ?>'>Enter image url here: </label>
      <input type = "url <?= day ?>" class = textarea id = "url" name = "data[url <?= day ?>]">
      <button type = "submit" class="btn btn-primary btn-block">Submit</button>
    </form>

    
  </body>
</html>

我只登录了一个谷歌帐户,我知道其他帖子中已经建议了这一点。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击电子邮件中的按钮以填充 Google 表格 的相关文章

随机推荐