Quand je télécharge une image je ne peux pas la lire sur certains téléphones (When I download an image I can't read it on certain phones)

The blocks you have pasted are not related to the response...

Anyway, if that is the response, then you only have to place it together the fix part:

je mets ces étiquettes sans changer le script ?
et "global fiximageURL" c'est bien " https://drive.google.com/uc?export=download&id=" ?

yes, if you are getting the response that you say.....

je vous montre la réponse.
les 2 données qui sont soulignées en bleu , se sont des données que j'ai dans googlesheet, mais sinon j'obtient l'URL et l'ID

je pense qu'il faut que je modifie l'étiquette image dans toute les fonctions que j'ai, car j'en ai plusieurs.
Vous voulez que j'envoie mon projet aia, peut être que ce sera mieux pour voir tous les blocs ?

Select the third item from the responseContent (which contains the image ID) and join it to the fix URL.

ok , vous ne voulez pas que j'envoie mon projet ?
ou tout l'écran qui concerne les blocs des images ?
je vous propose ça car j'ai plusieurs fonctions et plusieurs données dans un même bouton, et je pense que cela donne un mauvais fonctionnement pour afficher l'image !
Ce n'est pas normal que tout va bien dans google drive et googlesheet et que l'image ne reste pas affichée dans l'application !

ok, share your aia and tell me exactly where are you receiving the data and where do you want to display the image.

MAMconnect2 (1).aia (2.3 MB)
aller sur l'écran "ACTIVITES"

  • Dans le "bouton14" il y a la fonction "modifier1" qui me permet de modifier les données? et se trouve l'étiquette "imagemodifbrico" dont nous travaillons dessus pour afficher l'image.
    Il y a la fonction "téléchargement" qui me permet d'envoyer l'image dans google drive.
  • Dans le "bouton8" il y a la fonction "ReadReportData" qui me permet de lire les données et les images, et se trouve aussi l'étiquette "imagebrico1" qui correspond à la lecture de "imagemodifbrico" dont nous travaillons dessus.
  • Dans le" bouton1" c'est la même chose que le "bouton8".
    Vous pouvez essayer avec l'Emulator (j'ai créé un utilisateur avec "moi" en nom et "1" en mot de passe.
    Dite moi s'il y a quelque chose que vous ne comprenez pas !
    j'ai déjà envoyé le script qui plus haut.

Well, I'm not going to review your whole app/scripts and more...referring to the buttons 1 and 8 what you need in the GotText block is this (join te fix URL to the third item of the responseContent):

If you click button1, you will see the image. If you click on button 8, you will not see the image, why? because you are hiding the arrangement where the photo is displayed (bricolages) and showing modifbrico...

so, or you change that or if you want to see the image in modifbrico arrangement then set the image (in the same way) to the modifbrico1 image.

Other strange things I've seen...you have several equal if statements:

ok ,je vais définir "modifbrico1" de la même manière que "imagebrico" .

C'est parce que, il fallait que je définisse la même fonction pour d'autres étiquettes différentes.

j'ai oublié de dire que comme je crée des nouveaux utilisateurs je ne peux pas garder la même ligne (2) pour l'image, dans le script il y a "sh.getRange(2,3).setValue(fileID)". Je garde la même colonne (3). Comment modifier le script pour que chaque utilisateurs télécharge sa propre image ?

Capture3

Et si je veux ajouter une deuxième colonne pour une autre image ? j'ai essayé de faire comme ça, est ce que s'est correct ?

function doPost(e) {
var ss = SpreadsheetApp.openById('1I1Tff_GCNKuUWckdXAQmL9OIP-7_H0CoC51KWt8koFM');
var sh = ss.getSheetByName("Sheet4");

var rg = sh1.getDataRange().getValues();
for (var i=0;i<rg.length;i++)
if (rg[i][0] == nom)

var data = Utilities.base64Decode(e.parameters.data);
var blob = Utilities.newBlob(data, e.parameters.mimetype, e.parameters.filename);
var fileID = DriveApp.getFolderById('1u-C2WP_O1asjVhzzKpEdabKixlFDiWxK').createFile(blob).getId();

sh.getRange(2,15).setValue(e.parameters.filename[0]);
sh.getRange(3).setValue(fileID);
sh.getRange(4).setValue(fileID);

return ContentService.createTextOutput('File name: ' + e.parameters.filename + ' with Google Drive ID: ' + fileID);

Try it, see what happens and adjust the script if necessary... by now you should understand the scripts you use.

c'est pas évident le script !
j'ai essayé d'abord ça pour un nouveau utilisateur mais ça ne fonctionne pas, ça me change l'image du premier utilisateur (ligne2) !

function doPost(e) {
var ss = SpreadsheetApp.openById('1I1Tff_GCNKuUWckdXAQmL9OIP-7_H0CoC51KWt8koFM');
var sh = ss.getSheetByName("Sheet4");

var data = Utilities.base64Decode(e.parameters.data);
var blob = Utilities.newBlob(data, e.parameters.mimetype, e.parameters.filename);
var fileID = DriveApp.getFolderById('1u-C2WP_O1asjVhzzKpEdabKixlFDiWxK').createFile(blob).getId();

var rg = sh.getDataRange().getValues();
for (var i=0;i<rg.length;i++)
if (rg[i][0] == nom)
sh.getRange(2,15).setValue(e.parameters.filename[0]);
sh.getRange(3).setValue(fileID);
return ContentService.createTextOutput('File name: ' + e.parameters.filename + ' with Google Drive ID: ' + fileID);
}

ohlala c'est la catastrophe ! quand ça va bien d'un côté et bien ça ne va plus de l'autre !
J'ai testé l'application et je viens de m'apercevoir que quand je veux modifier mes données "textes" ça ne m'envoi pas la modification dans googlesheet , alors qu'avant ça fonctionnait, et je reçois ce message d'erreur !
Capture4

est ce que c'est à cause de la " fonction dopost" du script ?

We already talked in detail about the DOCTYPE error here

You might want to read the suggestions there again...

Taifun

oui désolé, je pense savoir d'où vient ce problème , merci.

J'ai essayé de modifier le script comme ça pour que l'image se positionne dans la ligne du nouveau utilisateur, mais ça ne fonctionne pas !

function doPost(e) {
  var ss = SpreadsheetApp.openById('1I1Tff_GCNKuUWckdXAQmL9OIP-7_H0CoC51KWt8koFM');
  var sh = ss.getSheetByName("Sheet4");

  var data = Utilities.base64Decode(e.parameters.data);
  var blob = Utilities.newBlob(data, e.parameters.mimetype, e.parameters.filename);
  var fileID = DriveApp.getFolderById('1u-C2WP_O1asjVhzzKpEdabKixlFDiWxK').createFile(blob).getId();
  
  sh.getRange(2,15).setValue(e.parameters.filename[0]);
  sh.getRange().setValue(fileID);
 for (var i=0;i<rows.length;i++) {
 if ( e.parameter.nom == rows[i][0] ) {
     rowid = (i);
      }
   ref.push(rg[i][2]);
}
  return ContentService.createTextOutput('File name: ' + e.parameters.filename + ' with Google Drive ID: ' + fileID);
}

C'est à dire : j'ai le nouveau utilisateurs, l'image se positionne dans la ligne qui lui correspond mais elle n'envoie plus l'ID dans la googlesheet (j'ai le code de l'image "/storage/emulated/0/Android/data/edu.mit.appinventor.aicompanion3/files/Pictures/_app_inventor_image_picker/picked_image2133963544150642963.jpg"), et dans tous les utilisateurs !
pouvez vous m'aider ?

Well, my last effort....

function doPost(e) {
var ss = SpreadsheetApp.openById('1fZT_PTw1tckuDGkCcJxwTtqXfQqt0wnxPxacNgj6yP4');
var sh = ss.getSheetByName('Sheet1');

var data = Utilities.base64Decode(e.parameters.data);
var blob = Utilities.newBlob(data, e.parameters.mimetype, e.parameters.filename);
var fileID = DriveApp.getFolderById('1Bw1ZTahOC_2AOOzxQk1yU8n5pZf9LwtC').createFile(blob).getId();

var rowData = [];
var rg = sh.getDataRange().getValues();
var userExist = '';

for (var row=1 ; row<rg.length ; ++row){
    if (e.parameters.user[0] === rg[row][0]){
      sh.getRange(row+1,3).setValue(e.parameters.filename[0]);
      sh.getRange(row+1,4).setValue(fileID);
      userExist = e.parameters.user;
    }
}

if (userExist == '') {
  rowData.push(e.parameters.user[0]);
  rowData.push('other');
  rowData.push(e.parameters.filename[0]);
  rowData.push(fileID);
  sh.appendRow(rowData);
}

return ContentService.createTextOutput('Image: ' + e.parameters.filename + ' with ID: ' + fileID + ' successfully uploaded to Google Drive');
}

You need to send in the Post, in addition to "data", "mimetype", "filename", the "user" (if you call it nom then change in the script "user" by "nom"). So, if the user already exists in googleSheet, it will replace the cols 3 and 4 (image_name and image_ID). If the user doesn't exist, then it will add a new row.

Je sais que vous m'avez beaucoup aidé et je vous en remercie beaucoup. Mais
s'il vous plait, il me manque juste le code pour une seconde image que j'avais demandé plus haut ! et ensuite avec toutes ces informations je pourrais compléter le projet.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.