2017-09-07 20 views
0

私たちは、WebアプリケーションとGoogleドライブの間のリンク機構を開発しています。 Google Pickerをユーザーに表示し、ユーザーがファイルを選択し、選択したファイルを$ .post経由でPickerコールバックのデータにリンクします。すべてうまく動作し、Pickerコールバックで選択したファイルのid、name、mimeType、url、およびsizeBytesを取得できます。Google Picker Api sizeBytesは定義されていません

また、ユーザーにはピッカーからファイルをアップロードしてもらい、1つのことを除いても機能します。ユーザーがファイルをアップロードすると、ピッカーのコールバックでdata.docsオブジェクトが正常に取得されますが、今回の「sizeBytes」フィールドは未定義です。

何かが間違っているか間違っていますか? Picker APIにアップロードした後、「sizeBytes」フィールドが未定義となるのはなぜですか?

我々はGoogleのピッカーを作成する方法これは、

var view = new google.picker.View(google.picker.ViewId.DOCS); 
var picker = new google.picker.PickerBuilder() 
.enableFeature(google.picker.Feature.MULTISELECT_ENABLED) 
.setAppId(appId) 
.setOAuthToken(oauthToken)    
.addView(view) 
.addView(new google.picker.DocsUploadView()) 
.setLocale(pickerApiLocale) 
.setMaxItems(5) 
.setCallback(pickerCallback) 
.build(); 
picker.setVisible(true); 

編集:

これは、我々は、コールバックデータをフェッチする方法です。

function pickerCallback(data) { 
    if (data.action == google.picker.Action.PICKED) { 
     for (var i = 0; i < data.docs.length; i++) { 
      var selectedDoc = data.docs[i]; 
      var params = { 
       fileId: selectedDoc.id, 
       fileName: selectedDoc.name, 
       mimeType: selectedDoc.mimeType, 
       webViewLink: selectedDoc.url, 
       size: selectedDoc.sizeBytes, 
      }; 
      $.post('myurl',params,function(){ 
       some code here.... 
      }); 
    } 
    } 
} 

ユーザーがファイルをアップロードする場合、「sizeBytes」は定義されていません。

+0

「sizeByte」メタデータをどのように取得していますか?最初に取り出される応答があったか? – noogui

+0

@noogui私の質問を編集しました – cck

答えて

1

ピッカーがアップロード時にfields=*を指定していないと思われます。つまり、アップロードの応答は最小のファイルプロパティのみになります。あなたはfiles.get(id)&fields=*をする必要があります。

Googleドキュメント(ドキュメント、スプレッドシートなど)にはサイズがありません。

1

これは起こっていることです。 data.doc[0]オブジェクトから "sizeBytes"(実際にはfileSize)プロパティにアクセスしていますが、そのようなプロパティはありません。あなたは()そのオブジェクトをCONSOLE.LOG場合は、ここにあなたがアクセスすることができますプロパティです:

{id: "dfdsafdsafdsafdsafM", serviceId: "docs", mimeType: "image/png", name: "IMAGE.png", description: "", …} 
description 
downloadUrl 
driveError 
driveSuccess 
iconUrl 
id 
isNew 
lastEditedUtc 
mimeType 
name 
serviceId 
type 
uploadId 
uploadState 
url 

は、リストにはsizeBytes(fileSize)はありません、したがって、あなたはundefinedを得ています。 fileSizeプロパティにアクセスする場合は、Handling Google Drive Itemsで述べたようにfiles.getを使用する必要があります。そしてその仕事、私の友人、私はあなたに残します。私はすでにデバッグの部分を行っています。

+0

ありがとうnoogui実際には、私はすでにファイルのアップロードを行った直後にしようとしましたが、サイズは再びnullです。ピッカーからファイルをアップロードした場合は、それを閉じてから再度開いて、アップロードしたファイルを選択すると、sizeBytesを取得できます。しかし、アップロードプロセスの直後に私は運がありません。ところで、Googleドライブに既に存在するファイルに対してfiles.getを使用すると、サイズがわかります。私は@pinoyyidが指摘したことは間違いないと思う、問題の原因はPicker Apiからファイルをアップロードすることだ... – cck

関連する問題