ここは初めてのことです。私はTurbo Pascalで20年前にプログラムを作成していましたが、一部のデータベース管理では、Med Schoolに入学しました。変数を設定することはできません
私は特定のセラピストに見えなければならない患者のスプレッドシートを管理しています。 Googleスプレッドシートで毎週1枚、カレンダーとして作成します。 5日間、6人のセラピストのために、それぞれ16の時間の列と6つの行の5つのグループがあります。セルは患者の名前を保持し、最初の列の下に記入されている名前のリストに対して検証されます。スプレッドシート自体は、各患者のセッション数を数えます。
2番目の部分は、すべての患者、毎日、1時間ごと、そしてすべてのセラピストが実行する小さなプログラムです。患者の名前が一致すれば、その日を太字で表示し、その後時間を表示し、その後セラピストと予約します。
各反復の後、以前の一致と比較されます。一致しない場合は、新しい日が太字で印刷されます。一致した場合は、時間だけが表示されます。スプレッドシートの最後の列から曜日(名前と番号)を取得すると、各日の日付がわかりやすくなります。
私の問題は次のとおりです。患者が終了する前の患者と同じ日に開始するたびに、変数が一致し、その日は書き込まれません。
私はvar diaprevio=""
、var diaprevio = 0
、var diaprevio = diaprevio+diaprevio
、var diaprevio = dia.getvalue()+1
とさえdelete diaprevio
を使用することにより、変数(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'になります。 1つの 'var'キーワードで複数の変数を宣言することができます。 'var active、coincidencia、dia、diaprevio、planning、sheet;'すべての変数を最初の行に宣言し、それらの変数に 'var'を再び使用することはできません。 –