0

Railsアプリをシードするためにgoogle_driveを使用してGoogleドライブドキュメントをダウンロードして操作しています。スプレッドシートをファイルとしてダウンロードして問題なく解析できますが、スプレッドシートをローカルに保存したいと考えています。

require "google_drive"

# Log in to Google Drive
session = GoogleDrive.login("my.email@address.com", "MyPassword")

spreadsheet = session.spreadsheet_by_title('SpreadsheetName')

# At this point spreadsheet exists and I can manipulate it freely

spreadsheet.download_to_file('spreadsheet_name.xls')

readmeに従ってdownload_to_fileを使用していますが、認証エラーが発生します。

/Users/*[me]*/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/google_drive-0.3.2/lib/google_drive/session.rb:429:in `request': Response code 401 for get https://docs.google.com/feeds/download/spreadsheets/Export?key=*[key]*: 

  <HTML> (GoogleDrive::AuthenticationError)
    <HEAD>
      <TITLE>Unauthorized</TITLE>
    </HEAD>
    <BODY BGCOLOR="#FFFFFF" TEXT="#000000">
      <H1>Unauthorized</H1>
      <H2>Error 401</H2>
    </BODY>
  </HTML>

  from /Users/Me/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/google_drive-0.3.2/lib/google_drive/file.rb:153:in `download_to_io'
        from /Users/Me/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/google_drive-0.3.2/lib/google_drive/file.rb:114:in `block in download_to_file'
        from /Users/Me/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/google_drive-0.3.2/lib/google_drive/file.rb:113:in `open'
        from /Users/Me/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/google_drive-0.3.2/lib/google_drive/file.rb:113:in `download_to_file'
        from db/seeds/modules.rb:14:in `<main>' 

私は何を間違っていますか?認証に失敗しているようですが、認証済みでファイルデータをダウンロードしました。

4

1 に答える 1

1

これは既知の問題です: https://github.com/gimite/google-drive-ruby/issues/34

download_to_file は別の API を使用しており、HTML としてのダウンロードのみをサポートしているようです。PDF としてダウンロードするには、手動で言及した URL を取得するコードを記述する必要があります。おそらく session.request() メソッドを使用して、google-drive-ruby が提供する承認を再利用できます。

google-drive-ruby にその機能があればいいですね。しかし、google-drive-ruby が使用する API (Document List API) は非推奨になるため、Google Drive API に切り替える必要があります。そのため、切り替え後にその機能を実装します (Google Drive API で利用できる場合)。

于 2013-01-07T10:23:34.700 に答える