0

リンクでGoogleドキュメントのファイルをダウンロードするための作業コードがあります。 xlxまたはxlsx形式のファイルのほとんどは、Googleシート形式で変換する必要があります。私はインターネットで見つけたいくつかの方法を試してみましたが、彼らは私のために働きません。以下のコードでは、私がテストするコードでコメントします。Googleシートに変換xlsをダウンロード機能の追加に追加

downloadFile("http://www.beltools.ru/prais_rar/price%20TD%20RI.xls","0B_E2P3ZhQySBY3BBMzdlazBLcTA") 

答えて

1

スプレッドシートにExcelを変換するために、DriveAppはそれを行うことはできません。そして、私は私はこのような関数を呼び出すGoogleはいくつかのドキュメントに

function downloadFile(fileURL,folder) { 

    var fileName = ""; 
    var fileSize = 0; 
    var fileId = ""; 

    var response = UrlFetchApp.fetch(fileURL, {muteHttpExceptions: true}); 
    var rc = response.getResponseCode(); 

    if (rc == 200) { 
    var fileBlob = response.getBlob() //.getAs(MimeType.GOOGLE_SHEETS) - get error 
    var folder = DriveApp.getFolderById(folder); 
    if (folder != null) { 
     var file = folder.createFile(fileBlob);//.getAs(MimeType.GOOGLE_SHEETS) - get error 
     fileName = file.getName(); 
     fileSize = file.getSize(); 
     fileId = file.getId(); 
    } 
    } 
    //file.setMimeType("application/vnd.google-apps.spreadsheet") - not work 
    //makeCopy('ssssss', folder, {convert: true}) - get error 

    var fileInfo = [ rc, fileName, fileSize, fileId ]; 
    return fileInfo; 
} 

を変更したことを、推測します。ドライブAPIを使用する必要があります。アドバンスドGoogleサービスのDrive API v2を使用できます。 「ドライブAPI v2」は、Google AppsスクリプトとGoogle APIサービスのドライブAPIを有効にすることで使用できます。

使用方法は次のとおりです。スクリプトエディタで

  1. 、リソースを選択>高度なGoogleの表示されたダイアログでサービス

  2. を、ドライブのAPI v2のオン/オフスイッチをクリックしてください。

  3. ダイアログの下部で、Google APIコンソールのリンクをクリックします。

  4. コンソールで、フィルタボックスをクリックし、API「ドライブAPI」の名前の一部を入力して、名前をクリックします。

  5. 次の画面で、[Enable API]をクリックします。

  6. Developers Consoleを閉じてスクリプトエディタに戻ります。ダイアログで[OK]をクリックします。有効にした高度なサービスがオートコンプリートで利用可能になりました。

詳細情報はhttps://developers.google.com/apps-script/guides/services/advancedです。

サンプルスクリプトでは、最初にファイルがfileURL(Excelファイル)がblobとしてダウンロードされます。 blobデータは、ドライブAPIを使用してGoogleドライブにアップロードされます。この場合、アクセストークンは必要ありません。 downloadFile()の場合、入力データと出力データはdownloadFile()と同じです。ファイル名はfileURLから取得されます。

スクリプト:

function downloadFile(fileURL, folder) { 
    var filename = fileURL.match(".+/(.+?)([\?#;].*)?$")[1]; 
    var response = UrlFetchApp.fetch(fileURL); 
    var rc = response.getResponseCode(); 
    var blob = response.getBlob(); 
    var resource = { 
    "mimeType": "application/vnd.google-apps.spreadsheet", 
    "parents": [{id: folder}], 
    "title": filename 
    }; 
    var res = Drive.Files.insert(resource, blob); 
    var fileInfo = [rc, res.title, blob.getBytes().length, res.id]; 
    return fileInfo; 
} 

結果:

[ 
    200, 
    sample.xlsx, 
    10000.0, 
    ## file id ## 
] 

私はあなたの質問を誤解している場合、私は申し訳ありません。

+0

はい!これは私が探していることです、ありがとう!私はちょうど気づかない、なぜGoogleはこれのための単純な機能を持っていない。 – Davagaz

+0

ようこそ。私はあなたを助けることができてうれしいです。 – Tanaike

関連する問題