Настройка функций для нажатий кнопок в модальном диалоге в скрипте Google Apps - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть send функция следующим образом отсюда :

function send(){
  var ui = SpreadsheetApp.getUi();
  var bccSend = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('main_gen').getRange(2,2).getValue();
  var bccSendReplace = bccSend.toString().replace(/,/g,"<br>");

  const str = 'You are about to send this to the following email address(es): \n\n' + bccSendReplace + '\n\n Click OK to send, otherwise, close this box or click Cancel to abort.';
  const html = `
    <b>${str}</b><br>
    <input type="button" value="ok" onClick="google.script.run.withSuccessHandler(() => google.script.host.close()).clickOk()">
    <input type="button" value="cancel" onClick="google.script.run.withSuccessHandler(() => google.script.host.close()).clickCancel()">
  `;
  ui.showModalDialog(HtmlService.createHtmlOutput(html), 'sample');
}

У меня тогда есть функция, когда нажимается OK. Если я просто запускаю эту функцию, она запускается, как ожидалось, и ошибок нет. Однако при нажатии кнопки «ОК» эта функция не будет запущена.

 function clickOK() {
          var ui = SpreadsheetApp.getUi();
          copyDataFromForm();
          var sendDetails = getMeta(); Logger.log(sendDetails);
          //var officeSelection = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('main_gen').getRange(2, 1).getValue();
          var subject = gen.setSubjectLine(sendDetails); Logger.log(subject);
          var BCC = '';
          var bccSend = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('main_gen').getRange(2,2).getValue();
          if(bccSend == ''){bccSend = sendDetails[6];}
          var toSend = main(sendDetails);//CreateHTML();
          var image = toSend[2]; 
          var attachment = [toSend[4].getAs(MimeType.PDF)];
          for(var i = 0; i<image.length; i++)
          {
            attachment.push(image[i]);
          }

          MailApp.sendEmail(sendDetails[7], subject, null, {
          name: 'Test ' + sendDetails[0].split(",", 1),
          htmlBody:toSend[3],
          inlineImages: toSend[1],
          attachments: attachment,
          cc:bccSend,
          replyTo:sendDetails[7]
          }); 
          ui.alert('Message has been sent.');
    }

И вот эта функция используется для нажатия кнопки «Отмена». Опять же, если я запускаю эту функцию самостоятельно, она работает нормально. Но он не вызывается при нажатии кнопки Отмена.

function clickCancel() {SpreadsheetApp.getUi().alert('Send Aborted.');}

Есть идеи, что я делаю неправильно? Спасибо!

.... ОБНОВЛЕНИЕ .... Я исправил орфографическую ошибку (она была правильной в скрипте, просто случайно скопировал старую часть кода. Это ошибка, которую я получаю в после нажатия кнопки Cancel.

The Error Message I get when I click the

1 Ответ

2 голосов
/ 11 апреля 2020

Я считаю, что это просто орфографическая ошибка

<input type="button" value="ok" onClick="google.script.run.withSuccessHandler(() => google.script.host.close()).clickOk()"> пишется clickOk

function clickOK() { пишется clickOK ()

две заглавные буквы на конец, а не одна заглавная и строчная буквы

Это похоже на ваш диалог и кнопки работают. Извините, я пока не знаком со стрелками.

function runTwo(){
  var ui = SpreadsheetApp.getUi();
  var bccSend = SpreadsheetApp.getActive().getSheetByName('Sheet13').getRange(2,2).getValue();
  var bccSendReplace = bccSend.toString().replace(/,/g,"<br>");

  const str = 'You are about to send this to the following email address(es): \n\n' + bccSendReplace + '\n\n Click OK to send, otherwise, close this box or click Cancel to abort.';
  let html = `<b>${str}</b><br>`;
  html+='<input type="button" value="ok" onClick="google.script.run.withSuccessHandler(function(){google.script.host.close();}).clickOk()" />';
  html+='<input type="button" value="cancel" onClick="google.script.run.withSuccessHandler(function(){google.script.host.close();}).clickCancel()"/>';
  ui.showModalDialog(HtmlService.createHtmlOutput(html), 'sample');
}

function clickCancel() {
  SpreadsheetApp.getUi().alert('Clicked cancel');
}

function clickOk() {
 SpreadsheetApp.getUi().alert('Click Ok')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...