0

私は学生です。だから私の問題は、私は外部リンクからファイルをダウンロードし、Googleドライブに保存しようとしている。しかし、ファイルはGoogleドライブのデフォルトフォルダに保存されています。私が望むのは、自動的にフォルダを作成し(存在しない場合)、ファイル名を自動的に変更することです。 コメントは高く評価されます。ここでフォルダーを作成し、ダウンロードしたファイルのファイル名をスプレッドシートの名前に変更するには

function downloadFile(){ 
    var sh = SpreadsheetApp.getActiveSheet(); 
    var url = sh.getRange('B1').getValue(); 
    var user = "testestest"; 
    var password = "testtesttest"; 
    var headers = { 
      "Accept": "application/xml", 
      "Content-Type": "application/xml", 
      "Authorization": "Basic "+ Utilities.base64Encode(user+":"+password) 
    }; 

     var options = { 
      "method" : "get", 
      "headers" : headers 
     }; 

     var response = UrlFetchApp.fetch(url,options).getBlob(); 
     var file = DriveApp.createFile(response); 
     Logger.log(file); 
    } 

答えて

1

は、私はそれが存在しない場合は、フォルダを作成するために書いたコードの一部です:

var inFolder = DriveApp.getFileById(sheetId).getParents().next().getId(); 
// this line gets the sheet (the document I am working on), then gets its parent folder and stores its ID. 

    // Logger.log("inFolder : " + inFolder); 
var folders = DriveApp.getFolderById(inFolder).getFolders(); 
// we now retrieve all folders in the previously located folder 
while(folders.hasNext()){ 
// we now cycle through all the found folders 
var folder = folders.next(); 
// we get the next folder 
var folderName = folder.getName(); 
// we get its name 
if(folderName == "Retenues"){ 
    var retenuesFolderId = folder.getId(); 
// if there is a folder with the name, it means that this folder exists. 
    var folderExists = true; 
    // Logger.log("Le dossier existe déjà."); 
} 
} 

if(folderExists != true){ 
var retenuesFolderId = DriveApp.getFolderById(inFolder).createFolder("Retenues").getId(); 

}

編集:私は上記のコードではいくつかのコメントを追加しました。

説明:

スクリプトは、まずスプレッドシートが自分のドライブにある場所を特定します。次に、シートがあるフォルダ内の既存のフォルダがすべて一覧表示されます。特定の名前の既存のフォルダがあるかどうかを確認します。そうでない場合は、ファイルを作成してからファイルを配置します。

あなたの場合、必要なファイルをダウンロードするだけで自動的にIDが取得されます。このIDを取得し、コピーします(ファイルを移動できるかどうかわかりませんが、コピーする必要があります)。

+0

こんにちは別の質問があります。だからここに私は既存のフォルダにファイルを作成する必要がある私はそれを行うことができますか?あなたはそれで私を助けることができますか? 同じメソッドを使用しようとしましたが、常にこのエラーが発生します "TypeError:オブジェクトFolderIteratorで関数getFilesが見つかりません。" –

+0

フォルダーイテレーター(getFolders)は、ファイルではなくフォルダーのみを取得します。特定のフォルダ内の特定のファイルを取得するには、そのフォルダを最初に取得してからファイルを取得する必要があります。したがって、フォルダとファイルの両方に格納する必要があるID。 –

関連する問題