Google表格脚本MailApp.sendEmail提示

时间:2019-05-20 18:05:18

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

尝试更改以下脚本以提示输入电子邮件地址。我可以将其作为加载项加载到Google表格中,并且工作正常,但是我希望每次运行时都可以更改“收件人”地址。有什么方法可以强制某种提示,以便我每次运行都可以输入电子邮件地址?

    function onOpen() { 
  // Try New Google Sheets method
  try{
    var ui = SpreadsheetApp.getUi();
    ui.createMenu('SendMail')
    .addItem('Send Report', 'getGoogleSpreadsheetAsExcel')
    .addToUi(); 
  }

  // Log the error
  catch (e){Logger.log(e)}

}

function getGoogleSpreadsheetAsExcel(){

  try {

    var ss = SpreadsheetApp.getActive();

    var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + ss.getId() + "&exportFormat=csv";

    var params = {
      method      : "get",
      headers     : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
      muteHttpExceptions: true
    };

    var blob = UrlFetchApp.fetch(url, params).getBlob();

    blob.setName(ss.getName() + ".csv");

    MailApp.sendEmail("xxxxxx@gmail.com", "Stock report of today", "The XLSX file is attached", {attachments: [blob]});

  } catch (f) {
    Logger.log(f.toString());
  }
}

1 个答案:

答案 0 :(得分:0)

您需要做的就是获取电子表格的用户界面并发送提示,然后通过if语句运行它以确保按下了正确的按钮,请尝试以下操作:

function getGoogleSpreadsheetAsExcel(){

  try {

    var ss = SpreadsheetApp.getActive();

    var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + ss.getId() + "&exportFormat=csv";

    var params = {
      method      : "get",
      headers     : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
      muteHttpExceptions: true
    };

    var blob = UrlFetchApp.fetch(url, params).getBlob();

    blob.setName(ss.getName() + ".csv");

    var ui = SpreadsheetApp.getUi();
    var prompt = ui.prompt('Enter email address:', '',ui.ButtonSet.OK_CANCEL);

    if (prompt.getSelectedButton() == 'OK') {

      var mail = prompt.getResponseText();
      MailApp.sendEmail(mail, "Stock report of today", "The XLSX file is attached", {attachments: [blob]});
    }

  } catch (f) {
    Logger.log(f.toString());
  }
}

代码提示输入电子邮件地址:

var prompt = ui.prompt('Enter email address:', '',ui.ButtonSet.OK_CANCEL);

然后通过一个快速的if语句来确保按下的按钮为“ OK”,如果取消该按钮将不执行任何操作。

if (prompt.getSelectedButton() == 'OK') {

  var mail = prompt.getResponseText();
  MailApp.sendEmail(mail, "Stock report of today", "The XLSX file is attached", {attachments: [blob]});
}

如您所见,var mail中使用了sendEmail(),这意味着它将使用您输入的任何电子邮件地址作为电子邮件的收件人。