Sending email from spreadsheet onOpen

2019-08-20 09:40发布

问题:

I have a script that performs a CRM system on my company and I am using Fusion table as a database. Every time i enter a new record, this record is saved on this fusion table. When the save action is performed, I use the follow code to make a copy of the data, that is passed to the database, in on spreadsheet so I have a backup of the data:

function AtualizarSpreadsheet(e)
{
  var app = UiApp.getActiveApplication();
  var planilha = SpreadsheetApp.openById(SPREADSHEET_ID);
  var sheet = planilha.getActiveSheet();

  var enviado = "NÃO";
  var id = e.parameter.id;
  var nomeDoReclamante = e.parameter.nomeDoReclamante;
  var telefone = e.parameter.telefone;
  var ddd = e.parameter.ddd;
  var prefixo = e.parameter.prefixo;
  var sufixo = e.parameter.sufixo;
  var email = e.parameter.email;
  var regiao = e.parameter.regio;
  var categoria = e.parameter.categoria;
  var produto = e.parameter.produto;
  var subcategoria = e.parameter.subcategoria;
  var versaoDeSoftware = e.parameter.versoDeSoftware;
  var dataDeInicio = e.parameter.dataDeInicio;
  var dia = e.parameter.dia;
  var mes = e.parameter.ms;
  var ano = e.parameter.ano;
  var tituloDoProblema = e.parameter.ttuloDoProblema;
  var descricao = e.parameter.descrio;
  var status = e.parameter.status;
  var prioridade = e.parameter.prioridade;
  var informarEngenharia = e.parameter.informarEngenharia;
  var dataDeRegistro = e.parameter.dataDeRegistro;
  var horaDeRegistro = e.parameter.horaDeRegistro;
  var historico = e.parameter.histrico;
  var ordem = e.parameter.ordem;
  sheet.s
  sheet.appendRow([enviado,
                   id,
                   nomeDoReclamante,
                   telefone,
                   ddd,
                   prefixo,
                   sufixo,
                   email,
                   regiao,
                   categoria,
                   produto,
                   subcategoria,
                   versaoDeSoftware,
                   dataDeInicio,
                   dia,
                   mes,
                   ano,
                   tituloDoProblema,
                   descricao,
                   status,
                   prioridade,
                   informarEngenharia,
                   dataDeRegistro,
                   horaDeRegistro,
                   historico,
                   ordem]);
  return app;
}

On the spreadsheet I perform a function onOpen() to send one email everytime the spreadsheet is oppened. However when my fusion table script performs the command: SpreadsheetApp.openById(SPREADSHEET_ID); the onOpen() function is not being triggered. Even if I oppen the spreadsheet I cant have that function runned. The onOpen() function is detailed bellow:

function onOpen() 
{
    MailApp.sendEmail("EMAIL", "SUBJECT", "BODY");
}

What am I doing wrong?

回答1:

You are attempting to call a service (MailApp) that is not supported in a simple trigger. You would need to call your onOpen() function something different, and attach an installable "on open" trigger to it instead.

https://developers.google.com/apps-script/understanding_triggers