10

संपादित करने के लिए Google दस्तावेज़ की प्रतिलिपि बनाने के लिए मुझे लगता है कि मुझे कुल नोब पोस्टिंग की तरह लगता है। मुझे सीएसएस, एचटीएमएल, और एक्सएमएल बहुत अच्छी तरह से पता है लेकिन हमेशा जेएस से परहेज किया है। मुझे बहुत कम जावास्क्रिप्ट पता है और हाल ही में पकड़ने के लिए एक Lynda.com कोर्स शुरू किया। मेरी अज्ञानता के लिए खेद है। इस प्रकार, मैं वास्तव में Google Apps स्क्रिप्ट सीखने में संघर्ष कर रहा हूं। जाहिर है, मुझे इससे पहले कि मैं इसे समझ सकूं, मुझे जेएस सीखना होगा।स्क्रिप्ट स्वचालित रूप से

जिस स्कूल के लिए मैं काम करता हूं (5000 छात्रों) ने एक ऑनलाइन पाठ्यक्रम स्थापित किया है। मैंने हजारों Google दस्तावेज़ वर्कशीट के रूप में पाठ्यक्रम बनाया है। ये कार्यपत्रक विभिन्न वेबसाइटों पर जुड़े हुए हैं।

हमें जिस समस्या का सामना करना पड़ रहा है वह यह है कि जब छात्र दस्तावेज़ खोलते हैं, तो उन्हें संपादित करने से पहले उन्हें उनकी प्रतिलिपि बनाना पड़ता है (मैं निश्चित रूप से उन्हें मूल रूप से संपादित करने में सक्षम नहीं होना चाहता)। यह वास्तव में मोबाइल टैबलेट पर मोबाइल यूआई का उपयोग करते समय Google डॉक्स में एक प्रतिलिपि बनाने के रूप में मोबाइल टैबलेट पर मोबाइल ब्राउज़र का उपयोग करने वाले छात्रों के लिए बेकार है।

मुझे पता है कि इस तरह की चीज स्क्रिप्ट के साथ स्वचालित हो सकती है। मैंने here देखा है, और कम और देखें, यह काम करता है! मैं अपने पैंट को खुशी से पंस रहा हूं क्योंकि मैं तीन साल तक ऐसी कार्यक्षमता खोज रहा हूं। (हाँ, मुझे पता है कि यह दुखी है)।

तो, मैं जो पूछ रहा हूं वह है, कोई भी इस कोड को अनुकूलित करने के तरीके के बारे में कोई जानकारी नहीं दे पाएगा ताकि छात्र वेबसाइट पाठ पर एक बटन क्लिक कर सकें और यह स्वचालित रूप से वर्कशीट की प्रतिलिपि बनाता है और खोलता है एक नए टैब में?

/** 
* Copy an existing file. 
* 
* @param {String} originFileId ID of the origin file to copy. 
* @param {String} copyTitle Title of the copy. 
*/ 
function copyFile(originFileId, copyTitle) { 
    var body = {'title': copyTitle}; 
    var request = gapi.client.drive.files.copy({ 
    'fileId': originFileId, 
    'resource': body 
    }); 
    request.execute(function(resp) { 
    console.log('Copy ID: ' + resp.id); 
    }); 
} 

कल सीखने जावास्क्रिप्ट सारा दिन खर्च, मैं अभी भी एक लंबा रास्ता तय करने के लिए मिल गया है। यह सुनिश्चित नहीं है कि मेरे लिए इसे स्वयं समझने में कितना समय लगेगा।

+1

और आपका प्रश्न वास्तव में क्या है? – PeeHaa

+0

असल में, बटन पर क्लिक करके निष्पादित करने के लिए इस फ़ंक्शन की आवश्यकता है और दस्तावेज़ को नए टैब में खोलने के लिए प्राप्त करें। कोड को अनुकूलित करने के लिए पर्याप्त प्रकार के लोगों की तलाश में। – user1798533

+0

यह ऐप स्क्रिप्ट कोड नहीं है। क्या आपने इसे सीखने की कोशिश की है? (किसी के लिए इसे लिखने के लिए पूछने से पहले) –

उत्तर

12

आप निश्चित रूप से ऐप्स स्क्रिप्ट के साथ ऐसा कर सकते हैं। केवल कुछ लाइनें लेती हैं। वास्तव में, आप नीचे लिखे गए संस्करण का उपयोग कर सकते हैं।

  1. आप मूल दस्तावेज़ सुनिश्चित लोगों कि उस तक पहुंचने में किया जाएगा के लिए कम से कम सक्षम पढ़ा जाता है -

    यहाँ कैसे मैं यह कर होता है।

    Access rights

  2. ले लो fileId URL से -

    function doGet(e) { 
        //file has to be at least readable by the person running the script 
        var fileId = e.parameters.fileId; 
        if(!fileId){ 
        //have a default fileId for testing. 
        fileId = '1K7OA1lnzphJRuJ7ZjCfLu83MSwOXoEKWY6BuqYitTQQ'; 
        } 
        var newUrl = DocsList.getFileById(fileId).makeCopy('File copied to my drive').getUrl(); 
        return HtmlService.createHtmlOutput('<h1><a href="'+newUrl+'">Open Document</a></h1>'); 
    } 
    
  3. चलाने के लिए यह तैनात -

    enter image description here

  4. निम्न कोड के साथ Apps Script में एक web app लिखें ऐप तक पहुंचने वाले व्यक्ति के रूप में।

    deploy settings

    याद करने के लिए

एक प्रमुख बात यह है कि Apps स्क्रिप्ट के द्वारा बनाया गया एक वेब एप्लिकेशन स्वचालित रूप से खुला एक नई विंडो बाध्य नहीं कर सकता है। इसके बजाय हम एक लिंक दिखा सकते हैं जो दस्तावेज़ में संपादन मोड में क्लिक करने योग्य है।

आप यहाँ कार्रवाई में इसे देख सकते हैं (कुछ डमी फ़ाइल पैदा करेगा) -

https://script.google.com/macros/s/AKfycbyvxkYqgPQEb3ICieywqWrQ2-2KWb-V0MghR2xayQyExFgVT2h3/exec?fileId=0AkJNj_IM2wiPdGhsNEJzZ2RtZU9NaHc4QXdvbHhSM0E

आप अपनी खुद की fileId में रख कर यह परीक्षण कर सकते हैं।

4

DocsList के बाद से हटा दिया गया है, वर्तमान में आप निम्नलिखित कोड का उपयोग कर एक फ़ाइल की एक प्रतिलिपि बना सकते हैं:

File file=DriveApp.getFileById(fileId).makeCopy(fileName, folder); 

जहां fileId के रूप में अरुण नागराजन द्वारा answer में विस्तार से बताया प्राप्त किया जा सकता।