Besoin d'aide pour le script

bonjour, j'ai un script qui fonctionnait pour une image, mais j'ai essayé d'ajouter une deuxième image sur la même ligne et ça ne fonctionne pas. En sachant que chaque image à son propre bouton pour être télécharger.
Quelqu'un pourrais me dire s'il est correct ?

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 data2 = Utilities.base64Decode(e.parameters.data2);
  var blob2 = Utilities.newBlob2(data2, e.parameters.mimetype2, e.parameters.filename2);
  var fileID2 = DriveApp.getFolderById('1u-C2WP_O1asjVhzzKpEdabKixlFDiWxK').createFile(blob2).getId();
  
var rowData = [];
var rg = sh.getDataRange().getValues();
var nomExist = '';

for (var row=1 ; row<rg.length ; ++row){
    if (e.parameters.nom[0] === rg[row][0]){
      sh.getRange(row+1,14).setValue(e.parameters.filename[0]);
      sh.getRange(row+1,5).setValue(fileID);
      sh.getRange(row+1,15).setValue(e.parameters.filename2[0]);
      sh.getRange(row+1,6).setValue(fileID2);
      nomExist = e.parameters.nom;
    }
}
if (nomExist == '') {
  rowData.push(e.parameters.nom[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');
}

Où, est ce je peux mettre 2 function doPost dans le script ?

Pourquoi personne me répond ??

This is not an AppInventor question.

If you have questions purely about google apps script, you should ask on Stack Overflow.

merci de votre réponse , je ne savais pas que ce n'était pas une question AppInventor

No (relevant) blocks, no designer, no aia

Looking at your script code, you do not seem to handle the second file Id all the way through...

I believe we also need to understand how you intend to build this into your workflow...if I remember correctly you have up to 9 images in your app, do you intend to expand the script to handle all 9?

oui c'est parce que je ne sais pas comment gérer le deuxième !

oui , mais je pense que je vais garder 6 images et pas 9.

Chaque images a son propre bouton pour être téléchargé dans google drive. J'ai déjà tout qui fonctionne pour une image ( script, téléchargement dans google drive, récupération de l'id image dans googlsheet) mais c'est pour mettre d'autres images que je ne sais pas comment faire.

j'avais essayé comme ça, mais ce n'est pas correct ( déjà par rapport au script du deuxième identifiant), ;c'est le bloc bouton de la deuxième image.

Capture1

I have had another look at this and you should be able to handle things more simply.

In your blocks to upload an image (the ones you started with for the first image), you can add another parameter, imgno.

For the first image, set the parameter imgno = 1.
For the second image, set the parameter imgno = 2.
For the third image, set the parameter imgno = 3.
and so on for the fourth, fifth and sixth images.

You may need to adjust the numbers after the third image to ensure that the correct cell is selected, if you have other cells inbetween.

In the script, you remove everything you have added for fileID2, and add the e.paramter.imgno to the column number when setting values.

SCRIPT

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 rowData = [];
var rg = sh.getDataRange().getValues();
var nomExist = '';

for (var row=1 ; row<rg.length ; ++row){
    if (e.parameters.nom[0] === rg[row][0]){
      sh.getRange(row+1,13 + parseInt(e.parameter.imgno)).setValue(e.parameters.filename[0]);
      sh.getRange(row+1,4 + parseInt(e.parameter.imgno)).setValue(fileID);
      nomExist = e.parameters.nom;
    }
}
if (nomExist == '') {
  rowData.push(e.parameters.nom[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');
}

Can you see how that might work for you ?

1 Like

oui génial ça fonctionne voilà le bloc :
Capture1

effectivement, en modifiant seulement 2 lignes du script (et étant plus propre que ce que je faisais par rapport au nombre d'images) cela fonctionne comme je le souhaitais .
Merci beaucoup de votre aide

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