2015-06-26 7 views
7

Sto lavorando con Google App Script. Sto cercando di: (1) fare una copia di un foglio di calcolo, (2) dare alla copia un particolare nome di file e (3) salvarlo in una cartella particolare.Script per app Google: come faccio a copiare il foglio di calcolo e salvarlo in una cartella particolare?

Mi sembra che il codice seguente dovrebbe funzionare, ma non è così. È esegue le attività 1 e 3, ovvero esegue una copia e salva la copia nella cartella desiderata. Tuttavia, non salva il file con il nome del file specificato. Invece, lo salva come "Copia di [nome file foglio di lavoro originale]".

(Nota:. So che questa domanda è stato risposto prima, ma credo che non ha ricevuto risposta dal momento che Google sunsetted Elenco documenti)

Grazie!

function saveAsSpreadsheet(){ 

    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxx"); 

    DriveApp.getFileById(sheet.getId()).makeCopy("desired file name", destFolder); 

    } //END function saveAsSpreadsheet 
+1

questo codice è corretto e funziona ... appena testato ora. –

+0

Come ha detto Serge, lavora anche per me. Tutti e 3 i compiti compiuti! – pointNclick

+0

Grazie. Hai ragione, quel codice funziona. Ho semplificato il mio codice prima di pubblicarlo. In realtà il mio codice è questo: function saveAsSpreadsheet() {var sheet = SpreadsheetApp.getActiveSpreadsheet(); var buildingNameAddress = sheet.getRangeByName ('buildingNameAddress'). getValue(); Logger.log (buildingNameAddress); // Registra la stringa corretta var destFolder = DriveApp.getFolderById ("xxxxxxxxxxxxxxxxxxxxxx"); DriveApp.getFileById (sheet.getId()). MakeCopy (buildingNameAddress, destFolder); } @pointNclick @ Serge insas – Jeff

risposta

7

Ecco il codice corretto per la funzione che ha funzionato per me. Non stavi impostando l'intervallo denominato per il quale ho utilizzato il metodo setNamedRange e gli ho assegnato un nome. Quello e cambiando il nome della variabile a cui si stavano ottenendo i valori dell'intervallo su TestRange. Inoltre, getValue() otterrebbe solo un valore mentre era necessario un intervallo di valori, quindi utilizzato getValues(). Ma il resto del codice andava bene e funzionava perfettamente.

function saveAsSpreadsheet(){ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var range = sheet.getRange('Sheet1!A1:B3'); 
    sheet.setNamedRange('buildingNameAddress', range); 
    var TestRange = sheet.getRangeByName('buildingNameAddress').getValues(); 
    Logger.log(TestRange); 
    var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxx"); 
    DriveApp.getFileById(sheet.getId()).makeCopy("Test File", destFolder); 
} 
Problemi correlati