在“工作表”中,在填充单元格时向特定收件人发送电子邮件

问题描述 投票:1回答:1

我正在尝试创建一个项目管理表,以便在许多对话者之间轻松协作(我知道有一些免费工具可以与公共组织合作,因此很难在项目中插入新程序)。

这是创建的示例文件:Google Sheet for Test

这个想法每次输入新问题时,作者都可以选择菜单“问题”>“发送问题”。并且应该在填写问题单元格的条件下(在“I2”中检查条件)将自动电子邮件发送到收件人电子邮件地址(C列)。

但是目前,该脚本无法按预期工作。

注意:我目前正在学习JS。

这是代码:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Question')
      .addItem('Send Question', 'sendQuestion')
      .addSeparator()
      .addItem('Send Answer', 'sendAnswer')
      .addToUi();
}


function sendQuestion() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Questions");
  var range = sheet.getRange("A22:L2");
  var emailvalid = range.getCell(1,7).getValue();
  var question = range.getCell(1,5).getValue();
  var answer = range.getCell(1,6).getValue();
  var qvalid = range.getCell(1,8).getValue();
  var ansvalid = range.getCell(1,10).getValue();

  if(qvalid == "Nope"){
      Browser.msgBox("Please, write a question !"); 
    }
  else {
    return false};
  
    if(emailvalid == "Nope"){
      Browser.msgBox("Please, input a valid email address !"); 
    }
  else {
    return false};
  
  var from = range.getCell(1,1).getValue();
  var recipient = range.getCell(1,2).getValue();
  var emailTo = range.getCell(1,3).getValue();
  var subject = "Project Management | Your received a new question" + question;
  var link = "https://docs.google.com/spreadsheets/d/1QUbw0WNju55h5pk3l8QqVCYa_jSCzrIzMjf0N4v-z8c/edit?usp=sharing"
  var options = {}
        options.htmlBody = "Hi" + recipient +"," + "<br />"+ "<br />" + "You received a new question from " + from + "<br />" + "<br />" + "You can answer directly into the table here: "<"br />"+"<br />" + link + "<br />" + "<br />"+ "Thank you";
        GmailApp.sendEmail(emailTo, subject, " ", options);

}

function emailSent(){
  var ui = SpreadsheetApp.getUi();
  var sent = sendQuestion("Send Email ?",ui.ButtonSet.YES_NO);
    
  if(sent == ui.Button.YES) {
    ui.alert("Your Message has been sent.");
  } else {
    ui.alert("Email canceled");
  }
}
  
javascript google-apps-script google-sheets
1个回答
1
投票

你有这个else return false语句的主要错误,如果验证通过,它基本上是终止函数,它应该是相反的,如果验证失败,在弹出通知问题后退出函数。

if(qValid == 'Nope') {
  Browser.msgBox('etc...');
  return; //return here, not in the else clause
}
//same for email valid

在这样的功能上还有很多其他的“改进”。但我想这不是重点,你在学习,最重要的是它现在有效。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.