2013-01-09 42 views
5

मैं एक Google Apps स्क्रिप्ट कैसे लिखूं जो रूट ड्राइव में बनाई गई फ़ाइलों को हटा देता है? मैं का उपयोग कर उन्हें खोजने के लिए कर रहा हूँ:Google ऐप्स स्क्रिप्ट: Google ड्राइव में फ़ाइल को कैसे हटाएं?

var ExistingFiles=DocsList.find(fileName); 

लेकिन मैं उन्हें स्क्रिप्ट के द्वारा कैसे नष्ट करने के लिए पता नहीं है। मुझे पता है कि DocsList.createFile का उपयोग कैसे करें, लेकिन DocsList.deleteFile मेरी समस्या को हल करने के लिए मौजूद नहीं है।

क्या उन फ़ाइलों को किसी अन्य फ़ोल्डर में या ट्रैश में स्थानांतरित करने का कोई तरीका है?

मैं जिस अन्य कामकाज पर विचार करता हूं वह एक ही नाम के साथ मौजूदा फ़ाइल को ओवरराइड करने में सक्षम होना है। वर्तमान में जब मैं पहले से ही MyDrive में उपयोग किए गए नाम के साथ एक फ़ाइल बनाना चाहता हूं तो यह उसी नाम के साथ एक दूसरी फ़ाइल बनाता है। मैं 1 फाइल रखना चाहता हूं (नया रखा गया है और पुराना खो गया है)।

उत्तर

7

यह कोड DocsList कक्षा का उपयोग करता है जिसे अब हटा दिया गया है।

कोशिश यह:

function test(){ 
deleteDocByName('Name-of-the-file-to-delete') 
} 

function deleteDocByName(fileName){ 
    var docs=DocsList.find(fileName) 
    for(n=0;n<docs.length;++n){ 
    if(docs[n].getName() == fileName){ 
     var ID = docs[n].getId() 
     DocsList.getFileById(ID).setTrashed(true) 
     } 
    } 
    } 

जब से तुम एक ही नाम के साथ कई डॉक्स हो सकता है मैं पाश के लिए एक दस्तावेजों की सरणी में सभी डॉक्स मिलता है और एक एक करके उन्हें एक को हटाने के यदि आवश्यक हो तो करते थे।

मैंने फ़ाइल नाम के साथ एक फ़ंक्शन का उपयोग स्क्रिप्ट में इसके उपयोग को सरल बनाने के लिए पैरामीटर के रूप में किया था, परीक्षण करने के लिए परीक्षण फ़ंक्शन का उपयोग करें।

नोट: ध्यान रखें कि इस नाम के साथ सभी फ़ाइलों को मिटाया हुआ किए जाएंगे (और वसूली योग्य ;-)

अपने प्रश्न सबसे हाल ही में रखते हुए और पुराने वाले को हटाने के बारे में के अंतिम भाग के बारे में हो सकता है, यह होगा करने योग्य (अंतिम एक्सेस दिनांक & समय पढ़कर) लेकिन मुझे लगता है कि एक ही नाम के साथ एक नया निर्माण करने से पहले पुरानी फ़ाइल को हटाना बेहतर विचार है ... कहीं अधिक तार्किक और सुरक्षित!

+0

यह काम करता है! बहुत बहुत धन्यवाद सर्ज – user1962847

+0

मदद के लिए खुशी-कृपया उत्तर के रूप में चिह्नित करें :-) –

+0

@ सर्जिनस मुझे पता है कि यह एक दिनांकित प्रश्न है, लेकिन मुझे आशा है कि आप अभी भी एक लूप बनाने के संबंध में मदद कर सकते हैं जो पुराने फाइलों को बनाम नए लोगों को हटा देगा । मैं यह पता लगाने की कोशिश कर रहा हूं कि किसी फ़ोल्डर में सभी फ़ाइलों को कैसे देखें, जिनके पास हमेशा 6 फाइलें होंगी जिनके नाम लगातार बने रहेंगे, इसलिए मुझे केवल एक नियमित स्क्रिप्ट चाहिए जो हर 24 घंटों में प्रत्येक फाइल के पुराने संस्करणों को हटा देगी। मुझे पता है कि यह सबसे सुरक्षित विकल्प नहीं है, लेकिन यह मेरी स्थिति के अनुसार सबसे अच्छे विकल्पों में से एक है। खासकर जब से यह केवल इन फ़ाइलों को प्रबंधित करता है, कोई ड्राइव-शेयरिंग नहीं। – CaffeinatedCoder

8

सेवा DocsList अब बहिष्कृत है। यह उत्तर नई DriveApp सेवा का उपयोग करता है।

यदि आप बाद में ट्रैश को साफ़ नहीं करना चाहते हैं तो इसे कचरे में भेजने के बिना फ़ाइल को हटाने का एक और तरीका है। ऐप्स स्क्रिप्ट के अंदर उन्नत ड्राइव सेवा में remove विधि है जो फ़ाइल को ट्रैश में नहीं भेजती है।

var eachFile, idToDLET, myFolder, rtrnFromDLET, thisFile; 

myFolder = DriveApp.getFolderById('Put_The_Folder_ID_Here'); 

thisFile = myFolder.getFilesByName(myFileName); 

while (thisFile.hasNext()) {//If there is another element in the iterator 
    eachFile = thisFile.next(); 
    idToDLET = eachFile.getId(); 
    //Logger.log('idToDLET: ' + idToDLET); 

    rtrnFromDLET = Drive.Files.remove(idToDLET); 
}; 

यह ड्राइव ऐप्लिकेशन सेवा और यह कचरा के लिए भेजने के बिना फ़ाइल को नष्ट करने के लिए डिस्क API को जोड़ती है। ड्राइव एपीआई विधि .remove(id) फ़ाइल आईडी की आवश्यकता है। यदि फ़ाइल आईडी उपलब्ध नहीं है, लेकिन फ़ाइल का नाम है, तो फ़ाइल को पहले नाम से देखा जा सकता है, और उसके बाद फ़ाइल आईडी प्राप्त करें।

आदेश DriveAPI का उपयोग करने के लिए आपको संसाधन, उन्नत Google सेवाएं मेनू के माध्यम से जोड़ने की आवश्यकता है। ड्राइव API को पर पर सेट करें। और सुनिश्चित करें कि आपके Google डेवलपर कंसोल में ड्राइव API चालू है। यदि यह BOTH स्थानों पर चालू नहीं है, तो यह उपलब्ध नहीं होगा।

2

हालांकि सेवा DocsList अब कक्षा फ़ोल्डर संदर्भों से के रूप में, हटाई गई है, settrashed विधि अभी भी मान्य है: अब

ExistingFiles.settrashed(true); 
1

:

https://developers.google.com/apps-script/reference/drive/folder#settrashedtrashed

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

DriveApp.getFileById(spreadsheet.getId()).setTrashed(true); 

या यदि आप पहले से ही एक स्प्रेडशीट के बजाय फ़ाइल है, डॉक आदि आप उपयोग कर सकते हैं:

file.setTrashed(true);