Откройте электронную таблицу по имени или создайте новую электронную таблицу, если ничего не найдено - PullRequest
0 голосов
/ 12 ноября 2018

Я использую API листов Google и Nodejs для добавления значений в электронную таблицу. Однако я хотел бы получить идентификатор электронной таблицы по имени электронной таблицы или создать новую электронную таблицу, если ничего не найдено. Чтобы было понятно, я имею в виду то, что IFTTT делает с действием «Добавить в электронную таблицу». Я не могу знать идентификатор таблицы заранее.

Opening spreadsheet by name in IFTTT

1 Ответ

0 голосов
/ 22 ноября 2018

Предполагая, что вы уже знаете, как проходить аутентификацию с помощью googleapis, ниже приведен минимальный пример запроса API-интерфейса диска для поиска электронных таблиц с определенным именем и использования API-интерфейса Sheets для его создания, если его нет.

// 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}`)
        })
    }
});
...