2015-06-26 7 views
7

मैं Google ऐप स्क्रिप्ट के साथ काम कर रहा हूं। मैं कोशिश कर रहा हूं: (1) स्प्रेडशीट की एक प्रति बनाएं, (2) प्रतिलिपि को एक विशेष फ़ाइल नाम दें, और (3) इसे किसी विशेष फ़ोल्डर में सहेजें।Google ऐप स्क्रिप्ट: मैं स्प्रेडशीट की प्रति कैसे बना सकता हूं और इसे विशेष फ़ोल्डर में सहेज सकता हूं?

ऐसा लगता है कि नीचे दिया गया कोड काम करना चाहिए, लेकिन ऐसा नहीं है। यह कार्य 1 और 3 को पूरा करता है - यानी, यह एक प्रतिलिपि बनाता है और कॉपी को वांछित फ़ोल्डर में सहेजता है। हालांकि, यह फ़ाइल को निर्दिष्ट फ़ाइल नाम से फ़ाइल को सहेजता नहीं है। इसके बजाए, यह इसे "मूल स्प्रेडशीट फ़ाइल नाम की प्रतिलिपि" के रूप में सहेजता है। "

(नोट:। मैं जानता हूँ कि इस सवाल से पहले उत्तर दिया गया है, लेकिन मेरा मानना ​​है कि यह उत्तर नहीं दिया गया क्योंकि Google डॉकसूची sunsetted)

धन्यवाद!

function saveAsSpreadsheet(){ 

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

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

    } //END function saveAsSpreadsheet 
+1

यह कोड सही है और काम करता है ... अभी परीक्षण किया गया है। –

+0

सर्ज ने कहा, मेरे लिए भी काम करता है। सभी 3 कार्य पूरा हो गए! – pointNclick

+0

धन्यवाद। आप सही हैं, वह कोड काम करता है। मैंने इसे पोस्ट करने से पहले अपना कोड सरलीकृत किया। मेरा कोड वास्तव में कैसा दिखता है यह है: फ़ंक्शन सेवएस्स्प्रेडशीट() {var sheet = SpreadsheetApp.getActiveSpreadsheet(); var buildingNameAddress = sheet.getRangeByName ('buildingNameAddress')। getValue(); Logger.log (buildingNameAddress); // लॉग सही स्ट्रिंग var destFolder = DriveApp.getFolderById ("xxxxxxxxxxxxxxxxxxxxxx") लॉग; DriveApp.getFileById (sheet.getId())। मेकॉपी (बिल्डिंगनाम एड्रेस, destFolder); } @pointNclick @ सर्ज इंसस – Jeff

उत्तर

7

यहां आपके फ़ंक्शन के लिए सही कोड है जो मेरे लिए काम करता है। आप नामित श्रेणी निर्धारित नहीं कर रहे थे जिसके लिए मैंने विधि setNamedRange विधि का उपयोग किया और इसे एक नाम दिया। वह वैरिएबल नाम बदल रहा है जिस पर आपको श्रेणी मानों को TestRange पर प्राप्त किया जा रहा था। इसके अलावा, getValue() केवल आपको एक मूल्य प्राप्त करेगा जबकि आपको मूल्यों की एक श्रृंखला की आवश्यकता है, इसके बजाय getValues() का उपयोग किया गया। लेकिन बाकी कोड ठीक था और पूरी तरह से काम किया।

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); 
} 
संबंधित मुद्दे

 संबंधित मुद्दे