bernd91364
Cadet 4th Year
- Registriert
- Nov. 2020
- Beiträge
- 93
Hallo,
ich hoffe hier kann ich etwas Hilfe bekommen, es geht um Tampermonkey und die Gmail API:
Ich habe ein Script gebaut, was auf einer bestimmten Seite einen Wert in der Dom sucht, mit dem vorherigen Wert vergleicht und bei einer Veränderung eine Push Notification rausschickt.
Und alle 20 Sekunden Seite reloaden, risne and repeat.
Klappt auch super.
Jetzt wollte ich das nur erweitern dass zusätzlich zum popup auch eine Email geschickt wird.
Weil sinnvoll, will ich von meiner Gmailadresse aus auf eine andere Emailadresse die Email schicken.
habe den kram direkt bei Google soweit gemacht, google cloud console projekt erstellt, oauth id kram und Api key und sowas besorgt.Ich habe nur nicht den wirklichen Plan wie ich das nun in Tampermonkey/Javascript Code umwandle und nutze.
habe von Gmail, Apis und Co. gar keine Ahnung, nachfolgender nicht funktionierender Code stammt von Chatgpt
(habe Alles bis auf den Emailpart mal rausgelöscht):
Kann mir wer quick and dirty sagen wie ich das easy lösen kann?
Will sprichwörltich nur eine Email mit festem sender, empfänger schciken, Email text wird aus globaler Variable abgelesen.
Also Alles gehardcoded was in die Email gehört.
Ahcja, zu den Fehlern:
Erst kannte er anfangs "gapi" nicht.
jetzt kommen die 2 Fehler:
ich mache wohl was grundsätzlich falsch.
Oder sind mein API key, Oauth Teil und so vielleicht falssch eingestellt?
ich hoffe hier kann ich etwas Hilfe bekommen, es geht um Tampermonkey und die Gmail API:
Ich habe ein Script gebaut, was auf einer bestimmten Seite einen Wert in der Dom sucht, mit dem vorherigen Wert vergleicht und bei einer Veränderung eine Push Notification rausschickt.
Und alle 20 Sekunden Seite reloaden, risne and repeat.
Klappt auch super.
Jetzt wollte ich das nur erweitern dass zusätzlich zum popup auch eine Email geschickt wird.
Weil sinnvoll, will ich von meiner Gmailadresse aus auf eine andere Emailadresse die Email schicken.
habe den kram direkt bei Google soweit gemacht, google cloud console projekt erstellt, oauth id kram und Api key und sowas besorgt.Ich habe nur nicht den wirklichen Plan wie ich das nun in Tampermonkey/Javascript Code umwandle und nutze.
habe von Gmail, Apis und Co. gar keine Ahnung, nachfolgender nicht funktionierender Code stammt von Chatgpt
(habe Alles bis auf den Emailpart mal rausgelöscht):
Javascript:
// ==UserScript==
// @name Preisfehler Alert with Email+Push
// @namespace mydealz-preisfehler-alert-push-email
// @version 0.7
// @description Email and push notification if a new article appears on the Preisfehler page of mydealz
// @author bernd
// @match https://www.mydealz.de/gruppe/preisfehler
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// @grant GM_addValueChangeListener
// @grant GM_notification
// @grant GM_registerMenuCommand
// @connect accounts.google.com
// @connect content.googleapis.com
// @grant GM_addStyle
// @connect smtp.gmail.com
// @require https://apis.google.com/js/api.js
// ==/UserScript==
const STORAGE_KEY = 'mydealz-preisfehler-alert-push-email-last-article-id';
// Replace the following values with your own client ID, API key, and email address
const CLIENT_ID = '...';
const API_KEY = '...';
const USER_EMAIL = '...';
await (async()=>{
// Load the Gmail API library
const script = document.createElement('script');
script.src = 'https://apis.google.com/js/api.js';
document.head.appendChild(script);
document.body.appendChild(script);
})();
// Load the Gmail API client library
await gapi.load('client:auth2', initClient);
// Function to initialize the Gmail API client
async function initClient() {
// Initialize the client with your API key and OAuth 2.0 client ID
await gapi.client.init({
apiKey: API_KEY,
clientId: CLIENT_ID,
discoveryDocs: ['https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest'],
scope: 'https://www.googleapis.com/auth/gmail.send'
});
}
// Function to send an email
async function sendEmail(sender, receiver, subject, body) {
// Construct the message object
let message = '';
message += 'From: ' + sender + '\r\n';
message += 'To: ' + receiver + '\r\n';
message += 'Subject: ' + subject + '\r\n';
message += '\r\n' + body;
// Encode the message in base64url format
let encodedMessage = btoa(message).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
// Send the email using the Gmail API
let request = gapi.client.gmail.users.messages.send({
'userId': 'me',
'resource': {
'raw': encodedMessage
}
});
// Execute the request
let response = await request.execute();
console.log(response);
}
await gapi.load('client:auth2', initClient);
await sendEmail(USER_EMAIL,'...','PREISFEHLER!!!',title);
Kann mir wer quick and dirty sagen wie ich das easy lösen kann?
Will sprichwörltich nur eine Email mit festem sender, empfänger schciken, Email text wird aus globaler Variable abgelesen.
Also Alles gehardcoded was in die Email gehört.
Ahcja, zu den Fehlern:
Erst kannte er anfangs "gapi" nicht.
jetzt kommen die 2 Fehler:
Code:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'gmail')
at sendEmail
(userscript.html?name=Preisfehler%2520Alert%2520with%2520Email%252BPush.user.js&id=42db437a-6dcc-4e0f-bc33-981ddc6fe60e:105:29)
at Proxy.<anonymous>
(userscript.html?name=Preisfehler%2520Alert%2520with%2520Email%252BPush.user.js&id=42db437a-6dcc-4e0f-bc33-981ddc6fe60e:159:9)
Uncaught ReferenceError: gapi is not defined
at cb=gapi.loaded_0?le=scs:1:1
ich mache wohl was grundsätzlich falsch.
Oder sind mein API key, Oauth Teil und so vielleicht falssch eingestellt?
Zuletzt bearbeitet:
(Ergänzung Errors)