2017-05-08 4 views
0

アカウントAからファイルを共有していますが、アカウントBはこのファイルを読み取り専用にすることができます。GoogleドライブAPI:他のアカウントからファイルをインポートする

DriveWebでは、簡単にインポートできます。その後、Drive APIで、アカウントBがそのファイルを(転送なしで)インポートする方法。

ありがとうございます。

+0

お使いの言語はどの言語ですか? –

+0

私はCドライブを使用していますが、Googleドライブライブラリを嫌い、httprequestを使って[新しいライブラリ](https://github.com/tqk2811/Cloud-Manager/tree/master/Cloud/GoogleDrive)を書きます。私は自己勉強C#だからコードを笑ってはいけません。 –

答えて

0

認証に精通しており、認証ドライブサービスの設定に関する基本的な考えがあるとします。そうでない場合は、documentationまたはthisチュートリアルをご覧ください。このチュートリアルでは、APIを使い始めることができます。

共有ファイルには、ドライブ内の受信者が共有しているユーザーの所有権でアクセスできます。そのようなファイルはあなたのクォータを占有せず、パーミッションが優先される限りのみアクセスできます。したがって、私は "インポート"によってファイルの所有権を取得し、それをアカウントBに保存することを意図していました。

これで、Serviceは認証されたドライブサービスアカウントBになります。アカウントBは、アカウントA.のファイルでなければ、最初にInsert Permissionを入力します。

FileIdは、ファイルのIdをコピーするとParentIdは、ファイルをコピーする先の親ディレクトリのIdされて、ここでは共有ファイルのコピーを作成する方法です。

public void CopyFile(DriveService Service, string FileId, string ParentId) 
{ 
    try 
    { 
     File FileToCopy = Service.Files.Get(FileId).Execute(); 

     File copiedFile = new File(); 
     copiedFile.Title = FileToCopy.Title; 
     copiedFile.Parents = new List<ParentReference>() { new ParentReference() { Id = ParentId } }; 

     Service.Files.Copy(copiedFile, FileToCopy.Id).Execute(); 
    } 
    catch (Exception e) 
    { 
     MessageBox.Show("An error occurred: " + e.Message); 
    } 
} 
+0

ああ、私は[ここ](https://developers.google.com/drive/v2/reference/parents/insert)でテストすることができますし、私はそれを見つけた返信に感謝します。これはParents.insertメソッドで、あなたの返信はFiles.Copyメソッドです( "import"ではなく新しいファイルが作成されます)。 –

関連する問題