这是我第一次来这里。 20年前我曾在Turbo Pascal和一些数据库管理方面进行过编程,然后我进入了医学院。变量不能设置
我正在管理必须由某些治疗师看到的患者电子表格。我每周在Google Spreadsheets上制作一张表格,形成一个日历。有16个时间专栏和5个每组6个行,分别为5天和6个治疗师。这些单元格包含患者姓名,并根据第一列中填写的名称列表进行验证。电子表格本身计算每个患者有多少次会话。
第二部分是一个小程序,贯穿每一位患者,然后每一天,然后每一小时,然后是每位治疗师。如果患者的姓名相符,则以粗体显示日期,然后显示时间,然后是他预约的治疗师。
每次迭代后都会与之前的匹配进行比较:如果一天不匹配,则会以粗体显示新的一天。如果匹配,它只会打印时间。它从电子表格的最后一列获取日期(姓名和电话号码),将日期变为更清晰的格式。
我的问题是:每当患者在完成之前与患者同一天开始时,变量匹配且不写入一天。
我曾尝试用var diaprevio=""
,var diaprevio = 0
,var diaprevio = diaprevio+diaprevio
,var diaprevio = dia.getvalue()+1
甚至delete diaprevio
改变变量(diaprevio)的值,但没有任何变化。我已经确认问题是保持其价值,因为无论何时发生,如果我在不同的一天添加前患者,问题就会解决。
的代码如下:
/* 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
}
}
我希望对解决这个问题的任何帮助。我认为在这种我仍然不知道的脚本中存在可变管理的问题。
非常感谢。
您正在对同一变量进行多个变量声明。我看到'diaprevio'正在多次宣布。你可以在函数的顶部声明一个变量,并且不要为同一个变量名使用'var'关键字两次。你可以声明一个变量而不给它赋值:'var diaprevio;'在这个例子中值将是'undefined'。你可以用一个'var'关键字声明多个变量。 'var activ,coincidencia,dia,diaprevio,planning,sheet;'你可以在第一行声明所有这些变量,并且绝对不要再对它们中的任何一个使用'var'。 –