Подсказка MailApp.sendEmail скрипта Google Sheets - PullRequest
0 голосов
/ 20 мая 2019

Попытка изменить следующий скрипт, чтобы запросить адрес электронной почты.Мне удалось загрузить это дополнение в листах 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 голосов
/ 20 мая 2019

Все, что вам нужно сделать, это получить пользовательский интерфейс электронной таблицы и отправить приглашение, а затем выполнить его с помощью оператора 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, чтобы убедиться, что нажатая кнопка «ОК», если она отменена, она ничего не сделает.

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(), что означает, что он будет использовать все, что вы указали в качестве адреса электронной почты, в качестве получателя вашей электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...