Node.jsでGoogle Drive上のファイルを複製(copy)する (Google Drive API v3)
前に書いたNode.jsでGoogle Driveの指定フォルダからファイル一覧を取得メモの続きです。
メソッドはこちらのcopyを使います。
スコープ
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/drive.file
https://www.googleapis.com/auth/drive.appdata
https://www.googleapis.com/auth/drive.photos.readonly
の四つを許可する必要があるみたいです。
公式チュートリアルのコードを元に編集します。
https://developers.google.com/drive/api/v3/quickstart/nodejs
省略
const SCOPES = [
`https://www.googleapis.com/auth/drive`,
`https://www.googleapis.com/auth/drive.file`,
`https://www.googleapis.com/auth/drive.appdata`,
`https://www.googleapis.com/auth/drive.photos.readonly`,
];
省略
みたいに記述しましょう。
drive.files.copy()
チュートリアルコードのlistFiles関数をmain関数として定義しなおして以下のように呼び出します。
//省略
function main(auth) {
const targetFileId = `xxxxxxxxxxxxxxxxxxxxxxx`; //コピーしたいファイルID
const drive = google.drive({version: 'v3', auth});
const params = {
fileId: targetFileId
};
drive.files.copy(params)
.then(res => console.log(res))
.catch(err => console.log(err));
}
試してみる
実行すると
こんな感じで同じフォルダーにコピーされます。
GaxiosError: Insufficient Permission: Request had insufficient authentication scopes.
at Gaxios.request (/Users/n0bisuke/dotstudio/playground/gdrive/node_modules/gaxios/build/src/gaxios.js:70:23)
的なエラーがでる場合がありますが、token.jsonがすでに別のスコープで作成されてるときは公式チュートリアルのコードだと再認証されないので、token.jsonを一回削除してから試してみましょう。
別フォルダにコピーするのは別のメソッドが必要な模様なので調べて別記事にしてみます。
Author And Source
この問題について(Node.jsでGoogle Drive上のファイルを複製(copy)する (Google Drive API v3)), 我々は、より多くの情報をここで見つけました https://qiita.com/n0bisuke/items/6d73bb6e1af123db9a9b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .