Lolowr
Lolowr

Reputation: 79

How do to Install Script & Library with another Script in XX Documents PREVIOUSLY created?

How to charge multiple Docs white a Script and a Library (An ID of a Standalone Script )?

function GetListFilesInFolder() {
  var files = DriveApp.getFolderById("IDFOLDER").getFiles();
 while (files.hasNext()) {
    var file = files.next();
    Logger.log(file.getName());
    var doc = DocumentApp.openById(file.getId());
  }

PUT HERE THE ACTION TO DO ( Mettre ici les modifs a effectuer )* THE SCRIPT TO DO TO PASTE ID LIBRARY AND VERSION AND ALSO PASTE SCRIPT "Menu Library" IN EACH DOCUMENT * -> Paste THE SCRIPT "Menu Library" AND ERASE EXISTING SCRIPT IF PRESENT The key TO PASTE "KEY ID OF THE STANDALONE SCRIPT" ex :"MsyugbZjzwbREFX21kTravXXXXXx3oCoSL" - Resources - Library - Search for a Library -> Paste ID ( The key TO PASTE "KEY ID OF THE STANDALONE SCRIPT" ) - Select - Set in a version V1 SCRIPT "biblio"
- Menu Manage Versions "V1" - Save -Save and close files

 Logger.log("Done")
}

Version 3 11/07/2014 (2 Functions) {oninstall function () {onOpen (); onOpen} / / /function () {biblio.oninstall ();}"} Put only the functions in the "Biblio" Standalone Script

SCRIPT library "biblio" is called library, it is Unique It contains all the menus to create and execute Functions It is Unique and Key ID MsyugbZjzwbREFX21kTravXXXXXx3oCoSL Save a Version "V1" for example in File menu Manage Versions

SCRIPT of Appeal "Menu Library" is the same in all my Google Docs Document + + + + This script exactly HERE + + + +

In this SCRIPT "Menu Library " The key is entered MsyugbZjzwbREFX21kTravXXXXXx3oCoSL - Resources - Library

++++++++++++++++++++++++ Container-bound SCRIPT ON EACH DOCUMENTS ++++++++++++++++++++++++

function oninstall() {
   onOpen();
 }

function onOpen() {
   biblio.oninstall();
 }

/** ++++++++++++++++++++++++ STANDALONE SCRIPT biblio ++++++++++++++++++++++++ */

function onOpen() {
// Add a menu with some items, some separators, and a sub-menu.
DocumentApp.getUi().createMenu('OAR ..')

.addItem('MAJ  Date + OAR', 'biblio.test')
.addItem('MAJ  Date  Auto', 'biblio.testdate')
.addItem('Ajout Texte QSP 28 OAR 2 Fois', 'biblio.AjoutQSP28JoursOAR2fois')

.addItem('URL Auto', 'biblio.urlauto')
.addItem('Macro en Cours ....', 'biblio.macroencours')
.addToUi();

 DocumentApp.getUi().createMenu('Données Patients ..')

 .addItem('Poids', 'biblio.message2')
 .addItem('Age', 'biblio.message2')
 .addItem('Taille', 'biblio.message2')
 .addToUi();

  DocumentApp.getUi().createMenu('Ordo Paramedical ..')   
 .addItem('Accès Ordo Paramedical', 'biblio.accesordoparaA4')
 .addItem('Accès Ordo Paramedical ALD', 'biblio.accesordoparaA5')

 .addToUi();


 }

    function message2() { 

      DocumentApp.getUi() // Or DocumentApp or FormApp.
         .alert('Laurent inove tjrs et encore !    Developpement en Cours ...  Récupération des Données / Fiches Patients ...    Soyez Patients   !!!');


    // a creer
    }



    function urlauto() { 

      DocumentApp.getUi() // Or DocumentApp or FormApp.
         .alert('Developpement en Cours ... Veuillez Patientez ... Laurent travaille Déjà Beaucoup !');

    // a creer
    }



    function AjoutQSP28JoursOAR2fois() {       //Ajout QSP 28 Jours + OAR 2 fois
    var doc = DocumentApp.getActiveDocument();// or DocumentApp.openById(file.getId()); as in your example code
      var element = doc.getBody().findText("Le");

      var d=new Date();
      var s3=d.getFullYear();
      var s2=d.getMonth()+1;
      var s1=d.getDate();
      var s4 =s2+2 
      var s5 =s1-10
      var s6 =s2+3
      if(s1<10) {
      s1=("0"+s1).slice(s1.length-1);
      } 
      if(s1>10) {
      s1=(""+s1).slice(s1.length-1);
      }
      if(s2<10) {
      s2=("0"+s2).slice(s2.length-1);
      } 
      if(s2>10) {
      s2=(""+s2).slice(s2.length-1);
      }

        var start = element.getStartOffset();
        var text = element.getElement().asText();
        text.editAsText().deleteText(3,12);
        text.replaceText("Le ","Le " +[s1,s2,s3].join('/') + "\n" + "\n" +"QSP 28 Jours" +"\n"+ "OAR  2 fois");
        text.editAsText().setFontSize(14,38,12);  

     }


    function accesordoparaA4() {
     DocumentApp.getUi() // Or DocumentApp or FormApp.
         .alert('Developpement en Cours ... Veuillez Patientez ... Laurent travaille Déjà Beaucoup !');
       // Open a document by ID.
     var doc = DocumentApp.openById("");
     }

    function accesordoparaA5() {
     DocumentApp.getUi() // Or DocumentApp or FormApp.
         .alert('Developpement en Cours ... Veuillez Patientez ... Laurent travaille Déjà Beaucoup !');
     }  

Upvotes: 0

Views: 116

Answers (1)

Mogsdad
Mogsdad

Reputation: 45720

There is no way to programmatically change the content of container-bounds scripts.

A work-around is described in comment 83 on Google Apps Script Issue 40, here.

The idea is to update the script in your "virgin" template file, then use the script from the comment to create new versions of each of your target documents, copying the content from the old doc to the new one. Then end result would be that you have the same document content, with the new script code.

A problem with this approach is that you would end up with new documents; the Doc ID would have changed, and the URL for each document would change. This would be a problem for any cross-document references or collaborators.

Upvotes: 1

Related Questions