2016-07-19 3 views
1

Ich habe die Codes mit app script generiert, um E-Mails automatisch zu senden, wenn Benutzer einige Werte in Google Tabellenkalkulation geändert haben, was gut funktioniert.Senden von E-Mails von verschiedenen Konten mit Google App Script

Jetzt teile ich meine Google-Tabelle mit dem App-Skript zwei weitere Personen (z. B. PersonA, PersonB). Daher möchte ich, dass jeder, der etwas an Google Tabellenkalkulation ändert, eine E-Mail unter seinem eigenen Konto sendet. Bsp: [Wir müssen alle innerhalb der Google Tabellenkalkulation selbst bearbeiten, ohne zur "aktuellen Web App URL" zu gehen, (danke Cameron Roberts für die Klarstellung) wenn PersonA irgendetwas ändert, dann wird eine E-Mail unter PersonA's Konto gesendet, und eine E-Mail wird unter der personB Konto gesendet, wenn personB etwas ändert

ich etwas auf den Rat hat auf Basis von user2970721 und Cameron Roberts I „Bereitstellen von Web-App“ angepasst „User die Web-App den Zugriff auf“ zB:...

enter image description here

ich bat auch Persona & personB gleich unter ihrer acco zu tun Stellen Sie sicher, dass sie das Skript mindestens einmal ausgelöst haben. zB:

enter image description here

Mein Problem ist, dass, nachdem ich all diese oben genannten getan haben, ganz gleich, wer alles auf Google-Tabelle ändert, wurden E-Mails immer von personB Konto (meine beste Vermutung ausgesendet ist, dass ich verkorkste etwas und PersonB war der Letzte, der das Skript ausgelöst hat).

Muss die "Projektversion" für mich, PersonA und PersonB oder etwas anderes, das ich ändern muss, anders aussehen? Jede Hilfe würde sehr geschätzt werden!

+0

Haben Ihre Benutzer darauf als Web-App Zugriff, um Aktualisierungen vorzunehmen (indem Sie zur "aktuellen Web-App-URL" gehen), oder bearbeiten Sie sie innerhalb des Blattes selbst? Wenn sie im Blatt selbst bearbeiten, müssen Sie dies nicht als Web-App bereitstellen. Bitte klären Sie in Ihrer Frage. Bei Ihrer vorherigen Frage ging ich davon aus, dass Sie den Auslöser "Bei Änderung" verwendeten, während Benutzer2970721 annahm, dass Sie eine Web-App verwendeten. Normalerweise wäre es das eine oder das andere. –

+0

Hallo Cameron, alle von uns müssen Dinge in Google Tabellenkalkulation bearbeiten, ohne auf die App-URL zu gehen, danke, dass Sie darauf hingewiesen haben, weil ich es gerade in meiner Frage geändert habe. Ja, ich verwende den Trigger "bei Änderung". Da ich in Google Tabellenkalkulation bearbeiten muss, bedeutet das, dass ich alle Web-App-Sache für PersonA & B entfernen muss, und lassen Sie sie den Auslöser mit "on change" einrichten? Danke für die tolle Hilfe! –

+0

Ja, lassen Sie die Web-App fallen und verwenden Sie einfach den onChange-Trigger. –

Antwort

2

Zuerst müssen Ihre Projektversionen nicht für jeden Benutzer unterschiedlich sein.

Ich gehe davon aus, dass Sie das Ereignis On Change anstelle einer Web-App verwenden. Wenn dies der Fall ist, sollten Sie die WebApp vollständig deaktivieren, da sie nicht benötigt wird.

Wenn PersonA einen On Change-Trigger erstellt, wird dieser jederzeit ausgelöst, wenn ein Benutzer (z. B. PersonA oder PersonB) die Tabelle bearbeitet. Wenn es ausgelöst wird, wird der Code als PersonA ausgeführt, da PersonA den Trigger erstellt hat. Aus diesem Grund wird die E-Mail vom Konto von PersonA gesendet.

Für das beschriebene Szenario, in dem sowohl PersonA als auch PersonB OnChange-Trigger erstellt und das Skript autorisiert haben. Ich würde erwarten, dass E-Mails von beiden Konten gesendet werden, die Auslöser erstellt haben.

Um nur eine E-Mail von dem Konto zu senden, das die Bearbeitung durchgeführt hat, müssen Sie überprüfen, ob der Benutzer, der die Änderung vorgenommen hat, mit dem Benutzer übereinstimmt, unter dessen Berechtigung das Skript ausgeführt wird. Ich habe das noch nie zuvor gemacht und die Dokumente machen nicht wirklich klar, ob es möglich ist.

Versuchen Sie, das Benutzerobjekt (z. B. e.user) zu überprüfen, das zum Change-Ereignis gehört, und prüfen Sie, ob diese E-Mail-Adresse die verschiedenen Benutzer widerspiegelt, die die Änderungen vornehmen.

Wenn es ist, können Sie es mit dem effektiven Benutzer vergleichen und die E-Mail senden, wenn sie übereinstimmen.

https://developers.google.com/apps-script/reference/base/user

https://developers.google.com/apps-script/reference/base/session#getEffectiveUser()

Schließlich könnte es einfacher sein, nur die Adresse der Person enthalten, um die Bearbeitung in Ihrem E-Mail-Thema zu machen, und haben nur alle E-Mails von einem Konto senden. Auf diese Weise wissen Sie, wer die Bearbeitung vorgenommen hat, aber nicht jeder Benutzer muss einen Trigger erstellen und alle zusätzlichen Prüfungen durchführen.

+0

Hallo, danke für die Antwort! Ich habe das passende Ding getestet (activeUser vs. User, der das Skript autorisiert), aber ich lerne immer noch. Ich lasse einfach jede E-Mail vom selben Konto senden, was ziemlich einfach ist. Unter der Annahme, dass ich PersonA als einzigen Absender gewählt habe, können PersonB und ich weiterhin "E-Mails senden" auslösen, wenn sich PersonA abgemeldet hat? –

+0

Gerne helfen. Ja, der Trigger wird ausgeführt, unabhängig davon, ob der Benutzer, der ihn erstellt hat, angemeldet ist oder nicht. –

Verwandte Themen