【问题标题】:Open spreadsheet by name or create new spreadsheet if none is found按名称打开电子表格,如果没有找到则创建新电子表格
【发布时间】:2019-04-14 15:37:33
【问题描述】:

我正在使用Google sheets APINodejs 将值附加到电子表格。但是,我想通过电子表格的名称获取电子表格 ID,或者如果没有找到,则创建一个新的电子表格。需要明确的是,我的意思是 IFTTT 的附加到电子表格操作。我无法事先知道电子表格 ID。

【问题讨论】:

  • 这些信息对您的情况有用吗?当您想从电子表格的文件名中检索电子表格ID时,请使用Drive API的“文件列表”,因为Sheets API无法实现。您可以在here查看文档。
  • @Tanaike 谢谢,只要付出足够的努力,这似乎可以解决问题。但是,它远不是一个完整的解决方案。它不仅获取电子表格,如果不存在则创建一个新电子表格,并且它不回答问题。另请注意,使用googleAPIs 模块的答案是首选。
  • 给您带来的不便,我深表歉意。我想正确理解你想要做什么。根据您的问题,我了解到您想从文件名中检索电子表格 ID。我的理解正确吗?但是在您的回复中,您似乎想在电子表格不存在时创建新的电子表格。我无法从你的问题中理解这一点。那么你能提供关于你想要做什么的详细信息吗?我真的很抱歉我的英语水平不好。
  • @tehhowch 我不是要你为我写代码。我想要一个不纯粹是链接的答案。如果站点无法访问,并且它们需要上下文(已由 Tanaike 提供,谢谢!),则链接答案没有用。 stackoverflow.com/help/how-to-answer.
  • 以下是任务摘要:使用 Drive API 搜索用户的驱动器以获取给定名称和所需的 mimetype。如果你找到一个结果……那就是你的结果。如果您没有找到结果.. 创建电子表格。您可以使用 Drive API(允许您配置创建它的位置)或使用 Sheets REST API(允许您最初控制工作表中存在的数据)来创建它。使用任何一种方法,您都可以使用其他 API 完成第一个无法完成的事情(在 root 中创建然后移动,或者在目标中创建然后初始化)

标签: javascript node.js google-sheets google-sheets-api google-api-nodejs-client


【解决方案1】:

假设您已经知道如何使用 googleapis 进行身份验证,下面是一个最小示例,如何查询 Drive API 以搜索具有特定名称的电子表格,并使用 Sheets API 创建(如果没有)。

// auth is google.auth.OAuth2()
const sheets = google.sheets({version: 'v4', auth})
const drive = google.drive({version: 'v3', auth})

var fileName = 'yourSpreadSheetName'
var mimeType = 'application/vnd.google-apps.spreadsheet'

drive.files.list({
    q: `mimeType='${mimeType}' and name='${fileName}'`,
    fields: 'files(id, name)'
}, (err, res) => {
    if (err) return console.log('drive files error: ' + err)
    const files = res.data.files
    if (files.length) {

        // There is an existing spreadsheet(s) with the same filename
        // The spreadsheet Id will be in files[x].id
        console.log(`found spreadsheet with id: ${files[0].id}`)

    } else {

        // Create spreadsheet with filename ${fileName}
        sheets.spreadsheets.create({
            resource: {
                properties: { title: fileName }},
            fields: 'spreadsheetId'
        }, (err, spreadsheet) => {
            if (err) return console.log('spreadsheets create error: ' + err)
            // The spreadsheet Id will be in ${spreadsheet.data.spreadsheetId}
            console.log(`created spreadsheet with id: ${spreadsheet.data.spreadsheetId}`)
        })
    }
});

【讨论】:

    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2020-12-21
    • 1970-01-01
    相关资源
    最近更新 更多