VBA e Google Apps Script



  • VBA e Google Apps Script
    di Vecchio Frac data: 09/01/2015 11:57:30

    Questa è un po' strana, ma vediamo se riesco a risolverla.
    Avrei (non dico la necessità ma almeno la) curiosità di eseguire in un documento Google Sheet ("Fogli Google" in versione italiana) una macro VBA che risiede in un foglio Excel importato in Google Drive.

    Purtroppo il linguaggio di Google è Javascript, che non conosco (e che non mi metto a imparare... fosse python me la caverei ma con js proprio non ci riesco).

    La macrettina in questione preleva da un range definito un elenco di indirizzi email e li trascrive in una casella di testo, così che poi io copio il testo e lo incollo (come una lista di distribuzione) in un messaggio vuoto di Gmail.
    Fermo restando che lo so, ci sono altre soluzioni, per esempio immettere già il testo in clipboard eccetera :)

    Rimane la curiosità di tradurre VBA in JS (googlando ci sono diverse guide e tutorial). Ora chiedevo qui a voi se qualcuno ha per caso affrontato questo problema, e magari mi indica il modello di codice per ciclare con JS su un range di celle, recuperarne il contenuto, e inserirlo da qualche parte per copiarlo/incollarlo (il massimo sarebbe creare una bozza di email vuota con il campo "A..." precompilato).

    Allego il pezzo di codice VBA a mo' di esempio... dati fittizi in A1:A5.
     
    Sub crea_indirizzario()
    Dim s As String
    
        s = Join(Application.Transpose(Range("a1:a5")), ";")
        
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50).TextFrame.Characters.Text = s
        
    End Sub






  • di Vecchio Frac data: 10/01/2015 14:10:10

    Up.
    Nessuno? ^_^





  • di scossa data: 11/01/2015 17:58:48

    cit. V.F.: "...Rimane la curiosità di tradurre VBA in JS .... e magari mi indica il modello di codice per ciclare con JS su un range di celle, recuperarne il contenuto, e inserirlo da qualche parte ..."

    Il codice sotto è la versione in .gs del tuo codice vba.
    Come vedi non serve un ciclo, ma se vuoi vedere come ciclare in gs vedi il secondo codice.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)


     
    function DaCelleAStringa() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var rows = sheet.getRange(1, 1, 5);
      var values = rows.getValues();
      sheet.getRange(1, 7, 1).setValue(values.join(";"));
    };
    
    
    
    function DaCelleAStringaCiclo() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var rows = sheet.getRange(1, 1, 5);
      var numRows = rows.getNumRows();
      var values = rows.getValues();
      var s = '';
    
      for (var i = 0; i <= numRows - 1; i++) {
        s = s + values[i]+';';
      }
      sheet.getRange(1, 5, 1).setValue(s);
    
    };
    



  • di Vecchio Frac data: 11/01/2015 20:25:15

    Era quello che mi serviva!
    Ripeto, non mi metterò a studiare GoogleScript ma... non si sa mai ^_^

    Grazie.





  • di scossa data: 12/01/2015 10:29:40

    cit. V.F.: "... Javascript, che non conosco (e che non mi metto a imparare...)".
    Io se fossi in te ci ripenserei:
    January Headline: JavaScript programming language of 2014!





    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di Vecchio Frac data: 12/01/2015 11:11:19

    Ah lo so bene, ma il mio cervello non è più elastico come una volta... già ho faticato per capire un po' di python che ha una sintassi semplice, simile ai vecchi basic di una volta, e che è stato studiato per evitare parentesi, interpunzioni e costrutti strani. Per fortuna non mi serve per lavoro :)