bonjour, dans mon label je lis une date dans un format bizarre , pouvez vous me dire d'ou vient le problème ?
voila les blocs
Nothing weird about it, this is what is coming from your spreadsheet. You have some options:
- Change
getValues()
togetDisplayValues()
in your script - Set your date as a formatted string in the spreadsheet (
'YYYY-MM-dd
) - Look at your script for
WritereadReport
to see how the formatting of the date is handled for the row data - Use text manipulation blocks to edit the returned date value so that it is presented as you require (remove everything from the
T
to the end)
j'ai déjà la forme de chaîne ('YYYY-MM-dd)
j'utilise la fonction Read et pas WritereadReport
Comment utiliser les blocs de manipulation de texte pour modifier la date ?
voilà le script
if (e.parameter.func == "WriteReadReport") {
var nom = e.parameter.nom ;
var date = e.parameter.date ;
var repas = e.parameter.repas ;
var change = e.parameter.change ;
var sieste = e.parameter.sieste ;
var soins = e.parameter.soins ;
var photo1 = e.parameter.photo1;
var photo2 = e.parameter.photo2;
var transmission = e.parameter.transmission ;
sh.appendRow([nom,date,repas,change,sieste,soins,photo1,photo2,transmission]);
SpreadsheetApp.flush();
var ref = [ ];
var rg = sh.getDataRange().getValues();
for (var i=0;i<rg.length;i++) {
if (rg[i][0] == nom) {
ref.push(rg[i][0]);
ref.push(Utilities.formatDate(rg[i][1],Session.getScriptTimeZone(), 'dd-MM-YYYY'));
ref.push(rg[i][2]);
ref.push(rg[i][3]);
ref.push(rg[i][4]);
ref.push(rg[i][5]);
ref.push(rg[i][6]);
ref.push(rg[i][7]);
ref.push(rg[i][8]);
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
if (e.parameter.func == "Read"){
SpreadsheetApp.flush();
var ref = [ ];
var rg = sh.getDataRange().getValues();
for (var i=0;i<rg.length;i++) {
if (rg[i][0] == nom) {
ref.push(rg[i][0]);
ref.push(Utilities.formatDate(rg[i][1],Session.getScriptTimeZone(), 'dd-MM-YYYY'));
ref.push(rg[i][2]);
ref.push(rg[i][3]);
ref.push(rg[i][4]);
ref.push(rg[i][5]);
ref.push(rg[i][6]);
ref.push(rg[i][7]);
ref.push(rg[i][8]);
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
if (e.parameter.func == "Modifier"){
var ss = SpreadsheetApp.openById(e.parameter.ID);
var sh = ss.getSheetByName(e.parameter.SH);
var rows = sh.getDataRange().getValues();
var rowid;
var data = JSON.parse('[' + e.parameter.DATA + ']');
for (var i=0;i<rows.length;i++) {
if ( e.parameter.nom == rows[i][0] ) {
rowid = (i);
}
}
sh.getRange(parseInt(rowid) + 1,1,1,data[0].length).setValues(data);
}
SpreadsheetApp.flush();
var row = sh.getRange(parseInt(rowid) + 1,1,1,data[0].length).getValues();
return ContentService.createTextOutput(JSON.stringify(row));
}
See my reply above for what is probably the easiest solution.
ah oui je n'avais pas vu les blocs, désolé
j'ai essayé les blocs et ça ne fonctionne pas
j'ai essayé de modifié le script avec getDisplayValues, ça ne fonctionne pas
if (e.parameter.func == "Lire"){
SpreadsheetApp.flush();
var ref = [ ];
var rg = sh.getDataRange().getDisplayValues();
for (var i=0;i<rg.length;i++) {
if (rg[i][0] == nom) {
ref.push(rg[i][0]);
ref.push(Utilities.formatDate(rg[i][1],Session.getScriptTimeZone(), 'dd-MM-YYYY'));
ref.push(rg[i][2]);
ref.push(rg[i][3]);
ref.push(rg[i][4]);
ref.push(rg[i][5]);
ref.push(rg[i][6]);
ref.push(rg[i][7]);
ref.push(rg[i][8]);
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
par contre j'ai oublié de dire que quand je clic sur le bouton pour me connecter et lire les données , la date est correct !
elle n'est pas correct quand je clic sur le bouton pour lire les données après les avoir modifié !
Is it that difficult to copy my blocks correctly?
j'ai essayé comme vous me l'avez montré , j'ai le même résultat que vous "Do it Result : 2024-02-19" mais la date ne change pas dans mon application j'ai toujours 2024-02-19 qui ai affiché alors que j'ai modifié la date dans la sheet , alors c'est pour ça que j'ai voulu essayer d'autre chose avec les blocs .
Est ce que je n'aurais pas un problème dans le bloc du bouton qui me permet de modifier et lire par la suite ?
car quand je clic sur un autre bouton pour fermer l'écran et que je reviens sur l'écran des données la date se met à la bonne date.
Et la date est correcte dans la sheet une fois modifié.
C'est que quand je modifie la date et que je clic sur le bouton pour la lire que j'ai le problème.
j'ai toujours le problème de la date même avec votre exemple:
quand je modifie la date et que je clic sur le bouton pour la lire ça affiche la même date que dans l'étiquette "2024-02-21" alors que j'ai modifié la date à 2024-02-23, par contre dans la sheet c'est la bonne date 2024-02-23 que j'ai modifié.
est ce le bouton le problème ?
voir les bocs du bas.
I think it was only an example to show you how it works....set this into Date label (I'm supposing you receive the date in the second item of recordData):
Décidemment maintenant ça me donne une date avec 1 jour de moins par rapport à la date que j'envoie dans la sheet , exemple : j'écris 2024/02/21 et je lis 2024/02/20 quand je clic sur le bouton modifier, mais quand je clic sur un autre bouton pour changer de page et que je reviens sur la page de la date , ça affiche la bonne date ! et c'est que la date qui a ce problème.
Est ce que il n'y a pas un problème au niveau du bouton modifier ?
j'ai fais comme ça
voila les blocs du bouton modifier
To try to understand the problem...you set a date to sent it to the google sheet, and
It is modified in Google Sheet correctly, and when GoogleSheet returns the modified row and you display it again on the screen, do you see one day less? In Google Sheet, has the date been modified correctly with the value you sent?
oui c'est exactement ça , dans google sheet la date modifiée est correct. Et lorsque google sheet renvoi la date pour l'afficher à l'écran il y a 1 jours de moins.
mmm...If you use other functions, like "Read", do you have the same problem?
non justement, c'est que avec la fonction modifier.
Can you check the settings of your google sheet to check the timeZone configured?
Set you TimeZone in "Fuseau horaire", save, and try again.
j'ai mis mon fuseau horaire et ça n'a rien changé, c'est toujours pareil . Aussi la date est à l'envers pour moi, exemple en france on écrit 21/02/2024 et j'ai 2024/02/20