首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点JS Google方法列表返回已删除的文件

节点JS Google方法列表返回已删除的文件
EN

Stack Overflow用户
提问于 2021-07-07 14:48:09
回答 3查看 616关注 0票数 1

我使用以下函数从Google获取文件列表:

代码语言:javascript
复制
const { google } = require('googleapis');
const SCOPES = ['https://www.googleapis.com/auth/drive'];
const KETFILEPATH = "key.json"
const auth = new google.auth.GoogleAuth({
    keyFile: KETFILEPATH,
    scopes: SCOPES
})

let files_list = async (auth, nextPageToken = null, res = []) => {
    const driveService = google.drive({ version: 'v3', auth })
    const list = await driveService.files.list({
        pageToken: nextPageToken,
        fields: 'nextPageToken, files(id, name)',
      });
      const files = list.data.files;
      if (files.length === 0) {
        console.log('No files found.');
      } else {
        for (const file of files) {
            res.push(file)
        }
        if (list.data.nextPageToken) {
            return await files_list(auth, list.data.nextPageToken, res)
        } else {
            return res
        }
      }
}

但是这个函数返回给我很多文件,我已经从https://drive.google.com/网站上删除了。我也有空垃圾。更重要的是,当我尝试使用这个函数删除这个文件时:

代码语言:javascript
复制
const { google } = require('googleapis');
const SCOPES = ['https://www.googleapis.com/auth/drive'];
const KETFILEPATH = "key.json"
const auth = new google.auth.GoogleAuth({
    keyFile: KETFILEPATH,
    scopes: SCOPES
})

let deleteFile = async (auth, file_id) => {
    const driveService = google.drive({ version: 'v3', auth })
    let res = await driveService.files.delete({ 'fileId': file_id })
    if (res.status != 200) {
        console.log(res)
        console.log("Error deleting file")
    }
}

我得到了这个输出:

代码语言:javascript
复制
{
  config: {
    url: 'https://www.googleapis.com/drive/v3/files/1Iddlq9Mri76rLhDi3TGCTYM-HEhVtEKL',
    method: 'DELETE',
    userAgentDirectives: [ [Object] ],
    paramsSerializer: [Function (anonymous)],
    headers: {
      'x-goog-api-client': 'gdcl/5.0.2 gl-node/16.3.0 auth/7.2.0',
      'Accept-Encoding': 'gzip',
      'User-Agent': 'google-api-nodejs-client/5.0.2 (gzip)',
      Authorization: '...',
      Accept: 'application/json'
    },
    params: {},
    validateStatus: [Function (anonymous)],
    retry: true,
    responseType: 'json'
  },
  data: '',
  headers: {
    'alt-svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"',
    'cache-control': 'no-cache, no-store, max-age=0, must-revalidate',
    connection: 'close',
    date: 'Wed, 07 Jul 2021 14:35:10 GMT',
    expires: 'Mon, 01 Jan 1990 00:00:00 GMT',
    pragma: 'no-cache',
    server: 'GSE',
    vary: 'Origin, X-Origin'
  },
  status: 204,
  statusText: 'No Content',
  request: {
    responseURL: 'https://www.googleapis.com/drive/v3/files/1Iddlq9Mri76rLhDi3TGCTYM-HEhVtEKL'
  }
}

我使用服务帐户进行身份验证。我已经和这个帐户共享了一个文件夹,他需要处理。

我该怎么处理呢?如何获取真实文件的列表,存储在Google中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-07 16:37:08

您已经与服务帐户共享了一个文件夹。但是,您正在请求服务帐户可以访问的所有文件。

代码语言:javascript
复制
 const driveService = google.drive({ version: 'v3', auth })
    const list = await driveService.files.list({
        pageToken: nextPageToken,
        fields: 'nextPageToken, files(id, name)',
      });

您还没有添加父母,所以您并不是只查找一个请求所有文件的文件夹。您是否考虑过您正在看到的文件是在服务帐户谷歌驱动器帐户上的文件?

代码语言:javascript
复制
const driveService = google.drive({ version: 'v3', auth })
    const list = await driveService.files.list({
        pageToken: nextPageToken,
        q: `'${FolderId}' in parents`,
        fields: 'nextPageToken, files(id, name)',
      });
票数 2
EN

Stack Overflow用户

发布于 2021-07-13 11:24:28

您必须使用以下方法

代码语言:javascript
复制
 let result = await drive.files.list({
    q: "mimeType='application/vnd.google-apps.folder' and trashed=false",
    fields: 'nextPageToken, files(id, name)',
    spaces: 'drive',
});

在此中,thrashed=false将不检查Thrash中的文件。万事如意

票数 1
EN

Stack Overflow用户

发布于 2021-08-12 00:26:11

您需要使用includeRemoved: false

代码语言:javascript
复制
const driveService = google.drive({ version: 'v3', auth })
const list = await driveService.files.list({
    pageToken: nextPageToken,
    includeRemoved: false,
    q: `'${FolderId}' in parents`
    fields: 'nextPageToken, files(id, name)',
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68288258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档