Когда таблица обновляется или закрывается, пункт меню исчезает - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать скрипт, который создаст пункт меню в Google Sheets для отправки электронного письма при нажатии.Элемент меню появится, когда я нажму кнопку «Выполнить» в редакторе сценариев, но затем при обновлении или закрытии Google Sheet этот пункт меню исчезнет.

Код, который у меня изначально работал, но по какой-то причине больше не работает.

function onOpen() {
  var ss = SpreadsheetApp.openById("1j2Q58oxxcTS-QYmdvaEiNWgyRagqF17rv8o3tYWB1TQ");
  var menu = [{name: "Submit", functionName:"myFunction"}];
   ss.addMenu("Submit Booking", menu)

}

function myFunction() {

  var source = SpreadsheetApp.openById("1j2Q58oxxcTS-QYmdvaEiNWgyRagqF17rv8o3tYWB1TQ");
  var email = "removed for privacy reasons";
   var subject = "New Buffel Park Travel Bookings";
  var link = "https://docs.google.com/spreadsheets/d/1j2Q58oxxcTS-QYmdvaEiNWgyRagqF17rv8o3tYWB1TQ/edit#gid=1832370497";
  var message = "New bookings have been submitted for Buffel Park site staff.";
  var html_message = "<p>New bookings have been submitted for Buffel park site staff."+
                     "<p>"+
                     "<p>Booking details can be found <a href=\""+link+"\">here.</a>"+
                     "<p>"+
                     "<p>A PDF copy of the sheet at time of submission is also attached to this email.";

  var pdf = DriveApp.getFileById(source.getId()).getAs('application/pdf').getBytes();
  var attach = {fileName:'Buffel Park Travel Booking.pdf',content:pdf, mimeType:'application/pdf'};

  MailApp.sendEmail (email, subject, message, {htmlBody: html_message,attachments:[attach]});

   var cc = Session.getActiveUser().getEmail();
  var sub = "New bookings have been submitted for Buffel Park site staff.";

  var html = "<p>New bookings have been submitted for Buffel park site staff."+
                     "<p>"+
                    "<p>A PDF copy of the sheet at time of submission is also attached to this email.";
    MailApp.sendEmail (cc, sub, message, {htmlBody: html,attachments:[attach]});
}

Мне просто нужно, чтобы кнопка оставалась там, где она есть, поэтому она отправляет запрос по электронной почте для запроса

1 Ответ

0 голосов
/ 01 мая 2019

Это нормальное поведение для исчезновения, однако оно должно появиться довольно быстро, когда у скрипта будет немного времени для запуска при открытии электронной таблицы.

Похоже, ваша проблема в том, что вы открываете электронную таблицу по ID, я сам ее протестировал, и, кажется, открытие по ID не работает, тогда как использование getActiveSpreadsheet () делает:

function onOpen(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menu = [{name: "Submit", functionName:"myFunction"}];
  ss.addMenu("Submit Booking", menu);    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...