car certains utilisateurs ne seront peut être faire avec le lien ! il faut que l'application soit simple a utiliser
Sorry, I do not understand your answer... probably a language barrier issue... just continue with your app how you think you should do it
Taifun
je disais : peut être que certains utilisateurs ne seront pas comment faire avec le lien , et qu'il faut que mon application soit simple à utiliser.
The user will have nothing to do with the link, it is you the developer
In the end the user will not see a difference in the method you use
Start using one of the 2 methods... both have their advantages and disadvantages...
Taifun
ah ok, ça va alors.
Je sais qu'avec base64 je suis limité à 50 000 caractères et donc j'ai peur que parfois ça puisse dépasser. Du coup je vais essayer google drive alors.
pouvez vous me donner les inconvénients de chacun ?
Images stored in Google Drive
Disadvantage: as you are not downloading the images it might take a bit if you want to display a lot of inages at the same time for slow intenet connections
Images stored as base64 string directly in the Google Spreadsheet
Disadvantages: limitation of max image size and images must be downloaded on each device before you are able to display them
Feel free to find more advantages and disadvantages... probably you even like to try both methods to learn and find out more...
Taifun
merci pour toutes ses informations, étant débutante je vais essayer la plus simple, merci
coucou me revoila avec mes problèmes
j'ai essayé base64 avec des exemples, et les photos n'arrivent même pas dans mon google Drive ( quand je clique sur le bouton14) ! je désespère. Merci de m'aider .
voici les blocs
et le script entier car je n'ai peut être pas mis la fonction "doPost" au bon endroit :
function doPost(e) {
var data = Utilities.base64Decode(e.parameters.data);
var blob = Utilities.newBlob(data, e.parameters.mimetype, e.parameters.filename);
DriveApp.getFolderById('1u-C2WP_O1asjVhzzKpEdabKixlFDiWxK').createFile(blob);
return ContentService.createTextOutput("télécgargement réussi");
}
function doGet(e) {
var ss = SpreadsheetApp.openById('1I1Tff_GCNKuUWckdXAQmL9OIP-7_H0CoC51KWt8koFM');
var sheet = ss.getSheetByName("Sheet3");
var sh = ss.getSheetByName("Sheet4");
var sh1 = ss.getSheetByName("Sheet5");
var nom = e.parameter.nom ;
var motdepasse = e.parameter.motdepasse ;
var email = e.parameter.email;
var msg;
// Get a list of current registered users
if (e.parameter.func == 'getUsers') {
var lr = sheet.getLastRow();
var users = sheet.getRange("A2:A" + lr).getValues();
return ContentService.createTextOutput(JSON.stringify(users));
}
else if ( e.parameter.func == "register" ) {
sheet.appendRow([nom,motdepasse,email]);
sh.appendRow([nom]);
sh1.appendRow([nom]);
return ContentService.createTextOutput("Nouveau compte");
}
else if ( e.parameter.func == "login" ) {
var msg = "Information incorrecte";
var loginData = sheet.getDataRange().getValues();
for ( var i = 0; i < loginData.length; i++ ) {
if ( nom == loginData[i][0] && motdepasse == loginData[i][1] ) {
msg = "connecté";
}
}
return ContentService.createTextOutput(msg);
}
else if ( e.parameter.func == "supprimer" ) {
var loginData = sheet.getDataRange().getValues();
for (var i = 0; i < loginData.length; i++ ) {
if ( nom == loginData[i][0] && motdepasse == loginData[i][1] ) {
msg = "compte supprimé";
sheet.deleteRow(i+1);
}
}
var reportData = sh.getDataRange().getValues();
for (var i = 0; i < reportData.length; i++ ) {
if ( nom == reportData[i][0] ) {
msg = "compte supprimé";
sh.deleteRow(i+1);
}
}
var reportData = sh1.getDataRange().getValues();
for (var i = 0; i < reportData.length; i++ ) {
if ( nom == reportData[i][0] ) {
msg = "compte supprimé";
sh1.deleteRow(i+1);
}
}
return ContentService.createTextOutput(msg);
}
// writes data then reads the same row back
if (e.parameter.func == "Read"){
var nom = e.parameter.nom ;
var actualites = e.parameter.actualites.replaceAll('|','\n') ;
var conges = e.parameter.conges.replaceAll('|','\n') ;
var lundi = e.parameter.lundi.replaceAll('|','\n') ;
var mardi = e.parameter.mardi.replaceAll('|','\n') ;
var mercredi = e.parameter.mercredi.replaceAll('|','\n') ;
var jeudi = e.parameter.jeudi.replaceAll('|','\n');
var vendredi = e.parameter.vendredi.replaceAll('|','\n');
sh1.appendRow([nom,actualites,conges,lundi,mardi,mercredi,jeudi,vendredi]);
SpreadsheetApp.flush();
var ref = ;
var rg = sh1.getDataRange().getValues();
for (var i=0;i<rg.length;i++) {
if (rg[i][0] == nom) {
ref.push(rg[i][0]);
ref.push(rg[i][1].replaceAll('\n','|'));
ref.push(rg[i][2].replaceAll('\n','|'));
ref.push(rg[i][3].replaceAll('\n','|'));
ref.push(rg[i][4].replaceAll('\n','|'));
ref.push(rg[i][5].replaceAll('\n','|'));
ref.push(rg[i][6].replaceAll('\n','|'));
ref.push(rg[i][7].replaceAll('\n','|'));
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
if (e.parameter.func == "ReadData"){
SpreadsheetApp.flush();
var ref = ;
var rg = sh1.getDataRange().getValues();
for (var i=0;i<rg.length;i++) {
if (rg[i][0] == nom) {
ref.push(rg[i][0]);
ref.push(rg[i][1].replaceAll('\n','|'));
ref.push(rg[i][2].replaceAll('\n','|'));
ref.push(rg[i][3].replaceAll('\n','|'));
ref.push(rg[i][4].replaceAll('\n','|'));
ref.push(rg[i][5].replaceAll('\n','|'));
ref.push(rg[i][6].replaceAll('\n','|'));
ref.push(rg[i][7].replaceAll('\n','|'));
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
if (e.parameter.func == "ReadReport") {
var nom = e.parameter.nom ;
var bricolages = e.parameter.bricolages.replaceAll('|','\n') ;
var imagebrico1 = e.parameter.imagebrico1 ;
var imagebrico2 = e.parameter.imagebrico2 ;
var imagebrico3 = e.parameter.imagebrico3 ;
var sorties = e.parameter.sorties.replaceAll('|','\n') ;
var imagesortie1 = e.parameter.imagesortie1;
var imagesortie2 = e.parameter.imagesortie2;
var imagesortie3 = e.parameter.imagesortie3 ;
var evenemts = e.parameter.evenemts.replaceAll('|','\n');
var imageevene1 = e.parameter.imageevene1;
var imageevene2 = e.parameter.imageevene2;
var imageevene3 = e.parameter.imageevene3;
sh.appendRow([nom,bricolages,imagebrico1,imagebrico2,imagebrico3,sorties,imagesortie1,imagesortie2,imagesortie3,evenemts,imageevene1,imageevene2,imageevene3]);
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(rg[i][1].replaceAll('\n','|'));
ref.push(rg[i][2]);
ref.push(rg[i][3]);
ref.push(rg[i][4]);
ref.push(rg[i][5].replaceAll('\n','|'));
ref.push(rg[i][6]);
ref.push(rg[i][7]);
ref.push(rg[i][8]);
ref.push(rg[i][9].replaceAll('\n','|'));
ref.push(rg[i][10]);
ref.push(rg[i][11]);
ref.push(rg[i][12]);
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
if (e.parameter.func == "ReadReportData"){
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(rg[i][1].replaceAll('\n','|'));
ref.push(rg[i][2]);
ref.push(rg[i][3]);
ref.push(rg[i][4]);
ref.push(rg[i][5].replaceAll('\n','|'));
ref.push(rg[i][6]);
ref.push(rg[i][7]);
ref.push(rg[i][8]);
ref.push(rg[i][9].replaceAll('\n','|'));
ref.push(rg[i][10]);
ref.push(rg[i][11]);
ref.push(rg[i][12]);
}
}
return ContentService.createTextOutput(JSON.stringify(ref)).setMimeType(ContentService.MimeType.JSON);
}
if (e.parameter.func == "Modifier") {
var ss = SpreadsheetApp.openById(e.parameter.ID);
var sh1 = ss.getSheetByName(e.parameter.SH);
var rows = sh1.getDataRange().getValues();
var row, rowid;
var newData = ;
var data = JSON.parse('[' + e.parameter.DATA + ']');
for (var j=0; j<data[0].length; j++) {
newData.push(data[0][j].replaceAll('|','\n'));
}
for (var i=0;i<rows.length;i++) {
if ( e.parameter.nom == rows[i][0] ) {
rowid = (i);
}
}
newData = [newData];
sh1.getRange((parseInt(rowid) + 1),1,1,data[0].length).setValues(newData);
SpreadsheetApp.flush();
var returnData = ;
newRow = sh1.getRange((parseInt(rowid) + 1),1,1,data[0].length).getValues();
for (var n=0; n<newRow[0].length; n++) {
returnData.push(newRow[0][n].replaceAll('\n','|'));
}
returnData = [returnData];
return ContentService.createTextOutput(JSON.stringify(returnData));
}
if (e.parameter.func == "Modifier1") {
var ss = SpreadsheetApp.openById(e.parameter.ID);
var sh = ss.getSheetByName(e.parameter.SHT);
var rows = sh.getDataRange().getValues();
var row, rowid;
var newData = ;
var data = JSON.parse('[' + e.parameter.DATA + ']');
for (var j=0; j<data[0].length; j++) {
newData.push(data[0][j].replaceAll('|','\n'));
}
for (var i=0;i<rows.length;i++) {
if ( e.parameter.nom == rows[i][0] ) {
rowid = (i);
}
}
newData = [newData];
sh.getRange((parseInt(rowid) + 1),1,1,data[0].length).setValues(newData);
SpreadsheetApp.flush();
var returnData = ;
newRow = sh.getRange((parseInt(rowid) + 1),1,1,data[0].length).getValues();
for (var n=0; n<newRow[0].length; n++) {
returnData.push(newRow[0][n].replaceAll('\n','|'));
}
returnData = [returnData];
return ContentService.createTextOutput(JSON.stringify(returnData));
}
}
In button14 you are attempting to send a GET and a POST at the same time. Don't do this.
Debug your blocks, check all of your values and variables, then try just following my guide to post a base64 image to google drive to begin with. Don't try to do anything else at the same time. Once you have this working, then you can consider adding more complexity.
comment je fais ? car j'ai du texte et des images dans le même bouton.
Mes blocs sont tous corrects avant que je m'aperçoive qu'il faut que j'utilise base64. Du coup je n'essaye pas de faire autre chose, c 'est juste qu'il faut que j'intègre base64 a mes blocs déjà existants, et comme je suis débutante , je suis perdu.
le mieux est que je créé un bouton juste pour envoyer l'image dans Drive ? et garder les autres boutons qui sont utiliser pour d'autres choses ?
As I said above, just set up blocks to send an image to google drive, nothing else. Get that working first before trying anything else.
j'ai fais ça mais ça ne fonctionne pas, je ne reçois pas d'image dans le drive.
To begin with
c'est la référence de google drive
je l'ai supprimé
What device and android version are you working with ?
avec un téléphone version android 13
je modifie avec "readExternalStorage"
faut il que je modifie le bloc "permission" ?
J'ai trouvé un tuto de "The coding Bus" sur youtube qui est exactement ce que je cherche a faire avec les images. Alors j'ai essayé mais j'ai un message d'erreur et j'obtiens l'image dans google drive, pouvez vous m'aider ?
function doPost(e) {
var data = Utilities.base64Decode(e.parameters.data);
var blob = Utilities.newBlob(data, e.parameters.mimetype, e.parameters.filename);
DriveApp.getFolderById('1u-C2WP_O1asjVhzzKpEdabKixlFDiWxK').createFile(blob);
return ContentService.createTextOutput("télécgargement réussi");
}