Domanda

Ho cercato di trovare un modo per inviare una fila singola di dati a un indirizzo e -mail specifico in un foglio di calcolo "in diretta/corsa" che sto usando nel mio dominio, per tenere traccia dei camionisti e dei loro numeri di raccolta. Sono riuscito a mettere insieme questo piccolo codice utilizzando l'editor di script di Google Apps disponibile in fogli:

function sendEmail()
{
   var sheet = SpreadsheetApp.getActiveSheet();
   var activeRow = sheet.getActiveCell().getRow();
   var cellID = "H" + activeRow;    
   var dataRange = sheet.getRange(activeRow, 1, 1, 6);
   var EMAIL_SENT = "EMAIL_SENT";
   var data = dataRange.getValues();
   Logger.log(data[0][0]);

   var emailAddress = usercellnum@carrier.net;
   var message = data;
   var subject = "CG-PU#";
   var emailSent = sheet.getRange(cellID).getValue();

   if (emailSent != "EMAIL_SENT")
   {
     MailApp.sendEmail(emailAddress, subject, message);
     var cell = sheet.getRange(cellID);
     cell.setValue(EMAIL_SENT);
   }
  }
SpreadsheetApp.flush();  
}

In ogni caso posso chiamare la funzione da una cella nel mio foglio di calcolo come =sendEmail() e dovrebbe inviare le informazioni solo dalla riga attiva, quindi contrassegnare quella riga come EMAIL_SENT Quindi non lo faccio accidentalmente.

Lo script viene eseguito perfetto se lo eseguo dall'editor di script all'interno e il codice difficile l'indirizzo e -mail, ma se provo a eseguirlo dal foglio di calcolo stesso ricevo il messaggio:

Errore: non si dispone dell'autorizzazione per chiamare SendEmail (riga 19, file "cps_sendemail.gs").

Qualsiasi assistenza con questo è molto apprezzata! Aiuterebbe a impedire al mio utente di tornare a MS Excel e Outlook. Quando faccio funzionare questa parte, mi piacerebbe davvero se potessi avere la funzione visualizzare un elenco di indirizzi da cui l'utente può selezionare, o qualche altro modo per impedire all'utente di dover ricordare e digitare l'indirizzo dei driver e Carrier, ma mi piacerebbe solo avere così tanto che funziona come previsto.

Lo script avrebbe/dovrebbe essere autorizzato a funzionare solo nel mio dominio di Google con i miei utenti, e la prima volta che l'ho eseguito - ero sicuro di aver attraversato il processo di autorizzazione, ma non capisco veramente quella parte delle cose.

Attualmente utilizzano MS Excel/Outlook e copiano e incollano la riga in un'e -mail da cui possono utilizzare i loro contatti per selezionare. Se non riesco a far sì che la funzione usi i contatti Googles, stavo prendendo in considerazione la creazione di un foglio di driver con una funzione di ricerca o qualcosa del genere - una specie di dolore da dover mantenere un elenco quando i contatti sono proprio lì - ma fai quello che devi fare !

Nessuna soluzione corretta

Altri suggerimenti

Leggi Autorizzazioni e funzioni personalizzate. Poiché le funzioni personalizzate (script chiamati dalle funzioni del foglio di calcolo) sono aperti a qualsiasi utente di un foglio di calcolo, non sono autorizzati a utilizzare alcun servizio che richieda l'autenticazione. Ecco perché non puoi inviare posta da uno.

Questo è diverso dal processo di autorizzazione di uno script ad accedere ai tuoi servizi. Ciò rende confuso il messaggio di errore, ma stai certo che fosse proprio il modo in cui stavi invocando la sceneggiatura.

Nessun problema, perché una funzione personalizzata è comunque un brutto modo per eseguire questo tipo di azione, perché la funzione verrà rivalutata ogni volta che c'è un cambiamento nel foglio di calcolo, inviando molte più e-mail di quelle che desideri.

Ti consiglio di creare invece una voce di menu per questa operazione. (Vedi il codice di esempio fornito nell'editor se si crea un nuovo script di fogli di calcolo.) Il flusso di lavoro sarebbe quello di spostare il cursore nella riga che si desidera elaborare, quindi utilizzare il menu per "renderlo così", che invocherebbe il tuo script.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top