Google Apps Script - вызов пользовательской функции из пользовательского меню - не вложенный - PullRequest
0 голосов
/ 02 февраля 2020

Вот где я сейчас нахожусь:

function sendEmails() {
  //Function to send Emails
}

function onOpen() {
  // Funtion 1 to add custom menu
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('Reminder', 'menuItem1')
      .addToUi();
}

function menuItem1() {
  // Funtion 2 to add custom menu
   var sheet = SpreadsheetApp.getActiveSheet();

  sheet.getUi() // Or DocumentApp or FormApp.
     .sendEmails()
     .alert('Reminder Emails Sent!');
} 

Это ошибка, которую я получаю:

TypeError: Не удается найти функцию getUi в объекте Sheet

Основной способ вызова функции sendEmails () - ее планирование. Я не смог найти способ вызвать эту функцию вручную через меню.

Не могли бы вы помочь мне с этим?

Ответы [ 2 ]

3 голосов
/ 02 февраля 2020

Полагаю, нам не нужно вызывать sendEmails в пользовательском интерфейсе, мы можем напрямую вызвать его при выборе пункта меню.

Примерно так:

function sendEmails() {
  //Function to send Emails
}

function onOpen() {
    SpreadsheetApp.getUi()
        .createMenu('Custom Menu')
            .addItem('Send Reminders', 'sendEmails')
            .addToUi();
}
1 голос
/ 02 февраля 2020

Отправка электронных писем onOpen ()

Для этого необходимо создать триггер onOpen для myonOpen, и отобразится диалоговое окно с сообщением sending emails. После завершения sendEmails () возвращает сообщение, отправленное в диалоговое окно, и оно отображается в диалоговом окне. Или вы можете добавить google.script.host.close () в withSuccessHandler, и он просто закроет диалоговое окно.

function sendEmails() {
  return 'Emails Sent';//have send emails return a message
}

//You have to create an installable onOpen for this
function myonOpen() {
  runDlg();

}

function runDlg() {
  var ss=SpreadsheetApp.getActive();
  var html='<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"><script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>';
  html+='<body><h1>"Sending Emails"</h1></body>';
  html+='<script>$(function(){google.script.run.withSuccessHandler(function(msg){$("body").append(msg);}).sendEmails();});console.log("My Code");</script>';
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Data');
}

Анимация:

enter image description here

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