Hallo bin neu Hier könnte mir jemand helf bitte
hab das Script genommen leider bekomme ich immer Felermeldung
! ```
`// Todoist Script zur Erstellung eines HTML Codes zur Einbindung in VIS mittels "basic - String (unescaped)" Widget
// Scriptversion: v0.2
// Ergänzungen tempestas, Stand 17.3.2018
// https://forum.iobroker.net/viewtopic.php?f=21&t=12563
// https://forum.iobroker.net/viewtopic.php?f=21&p=133205#p133205
! //Erforderliche Angaben:
var APItoken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // API Token kann in den Todoist Settings auf der Webseite ausgelesen werden
var debug = false;
var idEinkaufsliste= "javascript.2.Todoist.Alexa-Einkaufsliste";
var force = false;
! //Weitere Parameter ggf. anpassen:
var instanz = 'javascript.2'; instanz = instanz + '.'; // Instanz fuer die Datenpunkte definieren
var pfad = 'Todoist.'; // Pfad definieren
// var regexTrigger = /^javascript.0.Einkaufsliste.Items..$/; // Trigger analog der manuellen Einkaufsliste, brauchst du nicht, deaktiviert
! schedule("/1 * * * ", checkTODOIST); // Abfragezeit: jede Minute
! // *********************************************************
// Scriptbeginn - Ab hier nichts mehr ändern!
// *********************************************************
! createState(instanz + pfad +'telegramBtn', false, force, { // sendet die Liste via Telegram
name: 'Send Telegram',
desc: 'Sendet Telegram Einkaufsliste',
type: 'boolean',
role: 'state',
unit: ''
});
! var idTelegram = instanz + pfad +"telegramBtn";
! function sendTelegram() {
! / Modifizierung durch mich /
var Einkaufsliste1 = getState(idEinkaufsliste).val;
einkaufsliste = entferneDatenpunkt(Einkaufsliste1);
var telegramtext = einkaufsliste;
// var telegramtext = getState(idEinkaufsliste).val.replace(/
/g , "\n"); // telegram Liste formatieren, entfernt den Zeilenumbruch für vis und ersettz mit Zeilenumbruch Telegram
/ ************************ */
!
sendTo('telegram.0', { // Nachricht per Telegram senden
text: "Bitte mitbringen:\n\n" + telegramtext
});
setStateDelayed(idTelegram, false, 2000);
}
! // Trigger Telegram
! on(idTelegram, function(obj){ // trigger für Telegram
if(obj.state.val === true){
sendTelegram();
}
});
! function checkTODOIST() {
var APIprojectsURL = "https://beta.todoist.com/API/v8/projects?token="+APItoken;
var APItaskURL = "https://beta.todoist.com/API/v8/tasks?token="+APItoken;
var request = require("request");
var ToDoListen = []; // wird mit IDs der TO-DO Listen befuellt
var ToDoListen_names = []; // wird mit Namen der TO-DO Listen befuellt
request(APIprojectsURL, function (error, response, body) {
try{
var projects_json = JSON.parse(body);
for (k = 0; k < projects_json.length; k++) {
var projects = parseInt(projects_json[k].id);
var projects_name = JSON.stringify(projects_json[k].name);
projects_name = projects_name.replace(/\"/g, ""); //entfernt die Anfuehrungszeichen aus dem quellstring
ToDoListen[ToDoListen.length] = projects;
ToDoListen_names[ToDoListen_names.length] = projects_name;
createState(instanz + pfad + ToDoListen_names[k], {def: 'false',type: 'string',role: 'html', name: ToDoListen_names[k]+' HTML String'});
if(debug) log("Datenpunkt "+ToDoListen_names[k]+" erstellt.", "info");
createState(instanz + pfad + ToDoListen_names[k]+'.TaskID', {def: 'false',type: 'string',role: 'string', name: ToDoListen_names[k]+' Task IDs'});
if(debug) log("Datenpunkt "+ToDoListen_names[k]+'.TaskID'+" erstellt.", "info");
}
}
catch(err) {log (err.message)}
});
setTimeout(function() {
try{
request(APItaskURL, function (error, response, body) {
var json = JSON.parse(body);
for (j = 0; j < ToDoListen.length; j++) {
var HTMLstring = "";
setState(instanz + pfad + ToDoListen_names[j],"");
for (i = 0; i < json.length; i++) {
var Liste = parseInt(json[i].project_id);
var content = JSON.stringify(json[i].content);
content = content.replace(/\"/g, ""); //entfernt die Anfuehrungszeichen aus dem quellstring
content = content[0].toUpperCase() + content.substring(1); // Macht den ersten Buchstaben des strings zu einem Grossbuchstaben
var taskurl = JSON.stringify(json[i].url);
taskurl = taskurl.replace(/\"/g, "");
if (Liste == ToDoListen[j])
{
if(debug) log ("["+content+"] in "+ToDoListen_names[j]+" gefunden", "info");
! /* Modifizierung durch mich /
// HTMLstring = HTMLstring+content+"
"; // mit Link: HTMLstring = HTMLstring+" "+content+"";
! HTMLstring = HTMLstring+" • "+content+"
"; // mit Link: HTMLstring = HTMLstring+"* "+content+"";
/* ************************ */
! setState(instanz + pfad + ToDoListen_names[j], HTMLstring); // "<>"+HTMLstring+"
! ");
}
}
}
});
}
catch(err) {log(err.message)}
}, 1000);
setTimeout(function() { // legt IDs der einzelnen Tasks in Unterordnern an
request(APItaskURL, function (error, response, body) {
var json = JSON.parse(body);
for (j = 0; j < ToDoListen.length; j++) {
var HTMLstring = "";
setState(instanz + pfad + ToDoListen_names[j] +'.TaskID', "");
for (i = 0; i < json.length; i++) {
var Liste = parseInt(json[i].project_id);
var taskid = JSON.stringify(json[i].id);
if (Liste == ToDoListen[j])
{
if(debug) log ("["+taskid+"] in "+ToDoListen_names[j]+" gefunden", "info");
HTMLstring = HTMLstring+taskid+"
"; // mit Link: HTMLstring = HTMLstring+"* "+content+"";
setState(instanz + pfad + ToDoListen_names[j]+'.TaskID', HTMLstring); // "<>"+HTMLstring+"
! ");
}
}
}
});
}, 1000);
}
/* Modifiziert durch mich /
/ Entferne Sonderzeichen für Telegramübertragung aus Datenpunkt */
function entferneDatenpunkt(beschreibung) {
var rueckgabe;
rueckgabe = beschreibung;
try {
rueckgabe = rueckgabe.replace(/ • /g, "");
rueckgabe = rueckgabe.replace(/
/g , "\n");
}
catch(e) {}
return rueckgabe;
}`
! Ich habe leichte Veränderungen am Originalscript. Kann man erkennen anhand der Bemerkung "Modifiziert durch mich"
! Dienen rein der Kosmetik zur Anzeige auf VIS bzw. der Übertragung durch Telegram.
! Dürften eigentlich nicht den Error verursachen. Vorallem weil es ja jetzt über Tage ohne Probleme funktioniert hat.
! Hat jemand n ähnliches Problem bei dem Script?
! Gruß
! Johnny
! Hallo Johnny,
! genau das gleiche Problem habe ich auch. Tritt unregelmäßig auf, ich kann nicht feststellen, wann und warum. Siehe mein Posting weiter vorne, da habe ich zunächst vermutet, dass es mit leeren Listen zu tun hat, dem ist aber nicht so.[/i][/i][/i][/i][/i]
``` `