2013-11-24 9 views
6

मैं एक बड़ी परियोजना के लिए डॉक्सलिस्ट का उपयोग कर रहा हूं और यह पूरी तरह से काम कर रहा था। हाल ही में, बग पॉप अप कर रहे हैं और वे ज्यादातर फ़ोल्डर या फ़ाइल प्राप्त करने के साथ जड़ें हैं। जब मैंने शोध किया, मैंने पाया कि ड्राइवएप अपडेट किया गया था। समस्या यह है कि ड्राइवएप में डॉक्सलिस्ट के जैसे खोज पैरामीटर नहीं हैं।डॉक्सलिस्ट से ड्राइव ऐप में माइग्रेट करना?

उदाहरण के लिए

, अगर मैं इस तरह एक फ़ोल्डर संरचना था: में

Root 
-Main Folder 1 
--Folder 1 
--Folder 2 
-Main Folder 2 
--Folder 1 
--Folder 2 

फ़ोल्डर प्राप्त करने के लिए "फ़ोल्डर 1" "मुख्य फ़ोल्डर 2," मुझे ऐसा जैसे खोज पैरामीटर में डाल सकता है: DocsList.getFolder ('मुख्य फ़ोल्डर 2/फ़ोल्डर 1')

ड्राइवएप के साथ, मैं समझ नहीं पा रहा हूं कि इसके साथ कैसे काम करना है। से क्या मैं समझता हूँ, मैं ड्राइव ऐप्लिकेशन के लिए कुछ इस तरह करना है:

var mainFolders = DriveApp.getFoldersByName('Main Folder 2'); 
while (mainFolders.hasNext()) { 
    var mainFolder = termFolders.next(); 
    var subFolders = termFolder.getFoldersByName('Folder 1'); 
    // Something like this... 
} 

तो अगर मैं और अधिक है जो किसी फ़ोल्डर था "गहरे" मैं आगे भी इस का विस्तार करने के लिए होता है ..?

मुझे चीजों को आसान बनाने की बजाय मुझे लगता है, उन्होंने इसे सभी फ़ाइलइंटर और फ़ोल्डर्सइटर के साथ अधिक जटिल बना दिया। और कोड कोड में फ़ाइल या फ़ोल्डर को "प्राप्त" करना मुश्किल हो रहा है।

तो मूल रूप से, इस धागे का बिंदु यह पता लगाने के लिए है कि ड्राइव फ़ाइलों/फ़ोल्डरों को नेविगेट और संपादित करने के लिए डॉक्सलिस्ट में उपयोग करने वाला व्यक्ति ड्राइवएप पर माइग्रेट कर सकता है और वही चीज़ें प्राप्त कर सकता है।

विभिन्न परिदृश्यों के छोटे/अलग उदाहरण वास्तव में सहायक होंगे। मैं इसे वहां से ले जा सकता हूं। अगर आप सोचते हैं कि मैं इस बारे में स्पष्ट नहीं हूं कि मुझे किस चीज की ज़रूरत है, तो मैं इसे और संपादित कर दूंगा।

+0

अच्छा सवाल ... मुझे यकीन नहीं है कि क्यों मुझे लगता है कि डॉक्सलिस्ट 'प्रायोगिक' था! कि यह ड्राइव ऐप को बदल देगा। मिला [Google I/O] पर एक चर्चा के लिए यह लिंक (http://youtu.be/0HVJMIeb3aE?t=34m45s) जहां @ अरुणनगरन स्विचिंग की सिफारिश करते हैं। आपका उदाहरण इसके बारे में जाने का सही तरीका प्रतीत होता है लेकिन मैं इसे अधिक समय ले रहा हूं और अधिकतम निष्पादन समय तक पहुंच सकता हूं, यही कारण है कि मैं मानता हूं ['getContinuationToken()'] (https://developers.google.com/apps -स्क्रिप्ट/संदर्भ/ड्राइव/फ़ोल्डर-इटरेटर # getContinuation टोकन()) जोड़ा गया था। मैं भी 'getFolder (पथ)' विधि याद करेंगे। – dev

+0

विषय पर थोड़ा सा: https://plus.google.com/114246942750290439721/posts/duahLW1kRyF, https://plus.google.com/104812769727428324010/posts/D9wJJittDhb, https://code.google.com/p/गूगल-क्षुधा-पटकथा मुद्दों/मुद्दों/विस्तार?आईडी = 3045 – wchiquito

+0

निम्न लिंक पर एक संबंधित स्टैक ओवरफ्लो प्रश्न: [मेरे कोड में ड्राइवएप में डॉक्सलिस्ट को अपडेट करने के लिए कैसे करें] (http://stackoverflow.com/a/29778417/2946873) –

उत्तर

6

wchiquito की टिप्पणी से चर्चा एक दिलचस्प पढ़ा है, लेकिन सभी लिंक के बाद समय लेने वाला है।

नीचे पंक्ति: getFolderByPath() के ड्राइवएप संस्करण नहीं होंगे, इसलिए आप अपना खुद का रोल करने की आवश्यकता होगी। the Google+ group में, फ़ॉस्टिनो ने एक कार्य-आसपास प्रस्तावित किया और एरिक ने इसे बेहतर बनाया। यहां, "/" से शुरू होने वाले पथों को अनुमति देने के लिए एक अतिरिक्त चेक के साथ है।

function getFolderByPath(path) { 
    var parts = path.split("/"); 

    if (parts[0] == '') parts.shift(); // Did path start at root, '/'? 

    var folder = DriveApp.getRootFolder(); 
    for (var i = 0; i < parts.length; i++) { 
    var result = folder.getFoldersByName(parts[i]); 
    if (result.hasNext()) { 
     folder = result.next(); 
    } else { 
     return null; 
    } 
    } 
    return folder; 
} 

इसके साथ, आप बस myFolder = getFolderByPath('Main Folder 2/Folder 1'); कर सकते हैं। आप ड्राइवएप फ़ोल्डर उदाहरण के साथ समाप्त हो जाएंगे।

+0

मुझे लगता है कि किसी को पढ़ना चाहिए: वहां नहीं होगा एक ड्राइव ऐप संस्करण .?? :-) –

+0

@ सर्जिनस ओह! सबूत पढ़ने के लिए धन्यवाद। फिक्स्ड! – Mogsdad

2

नीचे दिया गया कोड मेरा काम करता है। यह वही आईडी

function convertFileFromDocsListToDriveApp(file) 
{ // Because of difference between DocsList and DriveApp 
    return (file === null) ? null : DriveApp.getFileById(file.getId()); 
} 

function convertFolderFromDocsListToDriveApp(folder) 
{ // Because of difference between DocsList and DriveApp 
    return (folder === null) ? null : DriveApp.getFolderById(folder.getId()); 
} 

मैं अपने कोड में कुछ 'सामरिक' की स्थिति में इस फोन होने पर आधारित है। मैंने ड्राइव ऐप से डॉक्सलिस्ट में रूपांतरण का परीक्षण नहीं किया, लेकिन मुझे उम्मीद है कि यह भी काम करेगी।

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