Utiliser un script depuis un mobile

Bonjour à tous,

J'ai fait appel à vos services il y a quelques temps pour le développement d'un script qui fonctionne parfaitement. Il fonctionne tellement bien qu'on souhaiterait pouvoir l'utiliser sur nos téléphones/tablettes.

J'ai donc ce script :

function onOpen() {
  var ui = SpreadsheetApp.getUi(); 
  var menu = ui.createMenu("Enregistrer PDF"); 
  menu.addItem("Enregistrer le PDF ↓ ","savePDF");
  menu.addToUi();

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var shMap = ss.getSheetByName('Fiche journalière')
  shMap.getRange('C4:C6').clearContent()
  shMap.getRange('H5:I7').clearContent()
  shMap.getRange('H11:I11').clearContent()
  shMap.getRange('C12:C17').clearContent()
  Browser.msgBox('Hello ! Fichier prêt, tu peux remplir')
}

function savePDF()
{
 // SÉLECTIONNER LA FEUILLE A SAUVEGARDER
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getActiveSheet();

//URL de SS ?
    var ssUrl = ss.getUrl();
    var sheetId= sheet.getSheetId();

    var url = ssUrl.replace(/\/edit.*$/,'')
      + '/export?exportformat=pdf&format=pdf'
      + '&size=LETTER'
      + '&portrait=true'
      + '&fitw=true'
      + '&top_margin=0.50'              
      + '&bottom_margin=0.50'          
      + '&left_margin=0.50'             
      + '&right_margin=0.50'           
      + '&sheetnames=false'
      + '&printtitle=false'
      + '&pagenum=false'
      + '&gridlines=false'
      + '&fzr=FALSE'
      + '&gid='+sheetId;
// RÉCOLTER LES INFORMATIONS DANS LE SHEET POUR COMPOSER LE NOM DU DOCUMENT
  var docId = sheet.getRange('B2').getValue();
  var docDate = sheet.getRange('C4').getValue();

  //mise en forme de la date : annee-mois-jour
 var docDateYYMMJJ = (docDate.getFullYear()+"-"+(docDate.getMonth()+1)+"-"+(docDate.getDate()+1));

  // Concaténons le tout 
  var docName = docId+"_"+docDateYYMMJJ ;
// CRÉER LE PDF A PARTIR DE L'URL
  var token = ScriptApp.getOAuthToken();
  var docurl = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' +  token } });
  var pdf = docurl.getAs('application/pdf').setName(docName);

  var file = DriveApp.createFile(pdf);

//  DEPLACER LE PDF DANS LE BON DOSSIER  
 /*
   ATTENTION IL FAUT ADAPTER LE CODE AVEC L'ID DU FOLDER DE DESTINATION

  */

  var finalFile = file.moveTo(folder);

  //RÉCUPÉRER LE LIEN
     var docUrl = finalFile.getUrl();

//ajouter l'urL dans la GED.
    var sheetGed = ss.getSheetByName('GED');
    sheetGed.appendRow([new Date(),docId,docUrl,docName]);
// ANNONCER LA RÉUSSITE DE CRÉATION DU DOCUMENT
 var ui = SpreadsheetApp.getUi(); 
 ui.alert('Well done\n\nLe devis '+ docId +' a bien été créé\nIl porte le nom : '+docName+'\n\nLe lien a été ajouté dans la GED.');

}

Et j'ai testé de lui appliquer une fonction complémentaire, qui semblerait-il, puisse utiliser les scripts en mode mobile.

Function onEdit(e)
{
if(SpreadsheetApp.getActiveRange().getA1Notation()=="E4"&&SpreadsheetApp.getActiveRange().getValue()){
SpreadsheetApp.getActiveRange().setValue(false)
function savePDF()
}

Malheureusement, c'est pour le moment un échec.

Quelqu'un aurait-il une idée ?

Merci :) :)

juju

Bonjour,

sans avoir testé, je pense qu'il faudrait modifier comme suit

function onEdit(e) {
  if (SpreadsheetApp.getActiveRange().getA1Notation() == "E4" && SpreadsheetApp.getActiveRange().getValue()) {
    SpreadsheetApp.getActiveRange().setValue(false)
    savePDF()
  }
}

Re-bonjour Steelson,

Malheureusement, il ne se passe rien quand je coche la case :/

juju

Est-ce que d'abord, sur un PC, le ou les scripts sont fonctionnel ?

Sur PC cela fonctionne du feu de dieu !

je suis curieux de voir quelle fonction bloque ... il faudrait faire un test en ajoutant petit à petit les fonctions jusqu'à trouver le point bloquant

je tente de reconstruire un fichier ... mais dans ton script je ne vois pas l'initialisation de folder !

Sur les mobiles, nous ne trouvons pas le menu "enregistrer pdf".

A l'ouverture sur mobile, pas d'effacement des cellules non plus.

Donc en fait, aucun script ne fonctionne.

Il bloque ici

var docurl = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' + token } });

outre le fait qu'il n'aime pas non plus les ui.alert

mais si, les scripts fonctionnent, pas les menus personnalisés mais on peut lancer des scripts par la méthode onEdit, cela fonctionne très bien sauf certaines fonctions !!

si dans le onOpen tu supprimes

  var ui = SpreadsheetApp.getUi(); 
  var menu = ui.createMenu("Enregistrer PDF"); 
  menu.addItem("Enregistrer le PDF ↓ ","savePDF");
  menu.addToUi();

alors les cellules seront effacées

android n'aime pas ui

et pour l'enregistrement en PDF sur mobile du coup, sans passer par le menu c'est possible ?

non car ceci bloque aussi

var docurl = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' + token } });

Donc aucune solution ? :(

J'ai trouvé cela, je ne sais pas si ça pourrait m'aider :/

https://developers.google.com/apps-script/api/how-tos/execute

J'ai essayé la méthode avec la case à cocher, sans succès :/

Bonne soirée

Juju

Bonjour,

Je me permets une petite relance :) si quelqu'un a une solution, je suis preneur.

Juju

Rechercher des sujets similaires à "utiliser script mobile"