Dies ist mein erstes Mal hier. Ich habe vor 20 Jahren in Turbo Pascal und einigen Datenbank-Management programmiert, dann bin ich in die Med School gekommen.Variable kann nicht gesetzt werden
Ich verwalte eine Tabelle von Patienten, die von bestimmten Therapeuten gesehen werden müssen. Ich mache wöchentlich ein Blatt in Google Spreadsheets in Form eines Kalenders. Es gibt 16 Zeitspalten und 5 Gruppen von jeweils 6 Reihen für 5 Tage und 6 Therapeuten. Die Zellen enthalten die Namen der Patienten und werden anhand einer Liste von Namen validiert, die in der ersten Spalte unten aufgeführt sind. Die Tabelle selbst zählt, wie viele Sitzungen jeder Patient hat.
Der zweite Teil ist ein kleines Programm, das jeden Patienten durchläuft, dann jeden Tag, dann jede Stunde und dann jeder Therapeut. Wenn der Name des Patienten übereinstimmt, druckt er den Tag fett, dann die Zeit und dann den Therapeuten, mit dem er einen Termin hat.
Nach jeder Wiederholung wird mit der vorherigen Übereinstimmung verglichen: Wenn der Tag nicht übereinstimmt, wird ein neuer Tag fett gedruckt. Wenn es übereinstimmt, wird nur die Uhrzeit gedruckt. Es erhält den Tag (Name und Nummer) aus der letzten Spalte in der Tabelle, die das Datum für jeden Tag in ein lesbareres Format umwandelt.
Mein Problem ist: Wenn ein Patient am selben Tag wie der Patient vor dem Abschluss beginnt, passt die Variable und der Tag wird nicht geschrieben.
Ich habe versucht, mithilfe von var diaprevio=""
, den Wert der Variablen (diaprevio) zu ändern var diaprevio = 0
, var diaprevio = diaprevio+diaprevio
, var diaprevio = dia.getvalue()+1
und sogar delete diaprevio
, aber es ändert sich nichts. Ich habe das Problem bestätigt ist diaprevio seinen Wert behalten, denn wenn das passiert, wenn ich den ehemaligen Patienten an einem anderen Tag hinzufügen, löst das Problem.
Der Code ist der folgende:
/* Funciones para generar horarios a partir del calendario
Esta escanea las celdas de calendario de derecha a izquierda y arriba a abajo
Para encontrar el texto coincidente y lo entrega en un documento de texto.
*/
function TerapeutaHora() {
var activ = SpreadsheetApp.getActiveSpreadsheet();
var sheet = activ.getActiveSheet(); //Selecciona la hoja activa, no una hoja fija
var planning = sheet.getRange("A1:S36"); // Rango del calendario + la lista de días
var ListaPacientes = sheet.getRange("A45:A72"); // Rango de los pacientes activos
var dia=planning.getCell(1,1);
doc = DocumentApp.create("Horario"); // Crea un nuevo documento llamado Horario
var docu = doc.getBody()
//Primero hacemos que pase por los pacientes activos
for (var p=1; p < 29; p++) {
var pacientesource=ListaPacientes.getCell(p,1)
var par = docu.appendParagraph(pacientesource.getValue())
par.setHeading(DocumentApp.ParagraphHeading.HEADING2) //Pone el nombre del paciente en HEADING
//Luego que pase por las filas y las columnas
for (var d = 0; d < 5; d++){ //cinco días
for (var b = 1; b < 18; b++){ //18 columnas de horario
for (var a = 3; a < 9; a++){ //Los 6 nombres
var columna = (d*7 +a) //Los 7 espacios entre un día y otro
var pacienteplanning=planning.getCell(columna, b) //Lee el paciente y lo compara con el que está eligiendo en este momento
var coincidencia = (pacienteplanning.getValue() === pacientesource.getValue())
if (coincidencia) { //Si coinciden los nombres
var dia=planning.getCell(columna,18);
var terapeuta=planning.getCell(columna,1);
var hora=planning.getCell(1, b);
if (diaprevio != dia.getValue()) {var nombredia = doc.appendParagraph("\n" + dia.getValue()); nombredia.setHeading(DocumentApp.ParagraphHeading.HEADING3); } // Si el día no es el mismo al previo, lo pone en HEADING.
doc.getBody().appendParagraph(hora.getValue() + " " + terapeuta.getValue()) //Escribe el resultado en el documento
}
}
var diaprevio = dia.getValue()
}
}
var diaprevio = dia.getValue()+1; //THIS IS WHERE I TRY TO CHANGE THE VALUE OF THE VARIABLE
doc.getBody().appendPageBreak() //Salto de Página
}
}
ich Hilfe zur Lösung dieses Problems schätzen würde. Ich denke, es gibt etwas über variable Verwaltung in dieser Art von Skript, das ich immer noch nicht kenne.
Vielen Dank.
Sie machen mehrere Variablendeklarationen derselben Variablen. Ich sehe, dass "diaprevio" mehrmals erklärt wird. Sie können eine Variable am Anfang der Funktion deklarieren und niemals das Schlüsselwort 'var' für denselben Variablennamen zweimal verwenden. Sie können eine Variable deklarieren, ohne ihr einen Wert zuzuweisen: 'var diaprevio;' Der Wert ist in diesem Beispiel 'undefiniert'. Sie können mehrere Variablen mit einem Schlüsselwort "var" deklarieren. 'var activ, coincidencia, dia, diaprevio, planung, sheet;' Sie könnten alle diese Variablen in der ersten Zeile deklarieren und niemals 'var' für irgendeinen von ihnen verwenden. –