2013-01-09 26 views
5

作成したファイルをルートドライブに削除するGoogle Appsスクリプトを作成するにはどうすればよいですか? 私が使用してそれらを見つけることができています:Google Appsスクリプト:Googleドライブでファイルを削除するには

var ExistingFiles=DocsList.find(fileName); 

しかし、私はスクリプトでそれらを削除する方法がわかりません。 私はDocsList.createFileの使い方を知っていますが、私の問題を解決するためにDocsList.deleteFileは存在しません。

これらのファイルを別のフォルダまたはゴミ箱に移動する方法はありますか?

私が検討する他の回避策は、既存のファイルを同じ名前で上書きできるようにすることです。 現在MyDriveで既に使用されている名前のファイルを作成する場合、同じ名前の2番目のファイルが作成されます。私は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) 
     } 
    } 
    } 

はこれを試してみてください。

スクリプトでの使用を簡略化するために、ファイル名をパラメータとする関数を使用しました。テスト関数を使用して試してみました。

注:この名前を持つすべてのファイルをゴミ箱に移動されることを認識して(と最新のを維持し、古いものを削除に関するご質問の最後の部分について

;-)回収でき、それは次のようになりますdoable(最後にアクセスした日付&の時間を読むことによって)しかし、私は同じ名前を持つ新しいものを作成する前に古いファイルを削除する方が良い考えだ...はるかに論理的で安全な!

+0

それは働きます!ありがとうたくさんのSerge – user1962847

+0

助けてくれてありがとう:-) –

+0

@Sergeinsas私はこれが日付の問題だと知っていますが、古いファイルと新しいものを削除するループを作成するのに役立つことを願っています。私は名前が一貫性を保つ6つのファイルを持つフォルダ内のすべてのファイルを調べる方法を把握しようとしているので、24時間ごとに各ファイルの古いバージョンを削除するルーチンスクリプトが必要です。私はそれが最も安全な選択肢ではないことを知っていますが、それは私の状況で与えられた最良の選択肢の1つです。特に、これらのファイルを管理しているのは自分だけなので、ドライブ共有はありません。 – CaffeinatedCoder

8

サービスDocsListは廃止されました。この回答は新しいDriveAppサービスを使用しています。

ファイルをゴミ箱に送信せずに削除するには、後でゴミ箱をきれいにしたくない場合があります。 Appsスクリプト内のアドバンストドライブサービスには、ファイルをゴミ箱に送信しない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); 
}; 

DriveAppサービスとドライブAPIを組み合わせて、ファイルをゴミ箱に送信せずに削除します。ドライブAPIメソッド.remove(id)にはファイルIDが必要です。ファイルIDが使用可能ではなく、ファイル名が使用可能な場合、ファイルはまず名前で検索され、ファイルIDが取得されます。

DriveAPIを使用するためには、リソース高度なGoogleのサービスメニューを通してそれを追加する必要があります。ドライブAPIをに設定して、に設定します。 Google Developers Consoleでドライブ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); 
関連する問題