Как создать новую электронную таблицу Google, используя googleapis в Node.js - PullRequest
0 голосов
/ 08 января 2020

Я хочу создать новую таблицу Google с использованием пакета googleapis .

Благодаря ответу Даниэля Апта я могу создать пустой файл этого файла. Но я хочу дать значения файла.

Я пытался таким образом

const createOption = {
  resource: {
    properties: {
      title: 'Ini judul spreadsetnya'
    },
    values: ['a']
  }
}

Но он сказал, что Invalid JSON payload received. Unknown name "values" at 'spreadsheet': Cannot find field.. Какое поле я должен добавить, чтобы вставить значения? И как мне создать электронную таблицу в указанной папке c? Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Что вы пытаетесь выполнить sh:

  • Вы хотите создать новую электронную таблицу с указанными c значениями.
  • Вы хотите, чтобы эта электронная таблица создавалась в указанная папка c на Google Диске.

Решение:

Первый шаг к выполнению sh - это понять, почему вы не можете использовать свойство values в вашем запросе.

Изучив документацию , вы увидите, что запрос должен быть экземпляром Spreadsheet, и этот тип не содержит значений.

Вы также можете видеть, что нет способа указать, где будет создаваться электронная таблица, поскольку ресурс Spreadsheet не содержит никаких ссылок на его родительскую папку.

Если мы сломаем если вы действительно хотите сделать три вещи:

  • Создать новую электронную таблицу
  • Переместить ее в указанную c папку
  • Заполнить ее значениями

Примечание. Шаг 1 и 2 можно выполнить одним вызовом API

Создайте новую электронную таблицу:

Измените тело запроса следующим образом:

const createOption = {
  resource: {
    properties: {
      title: 'Ini judul spreadsetnya'
    }
  }
};

Переместите электронную таблицу в другую папку

Вам потребуется использовать Drive API для перемещения файла.

Это делается путем обновления файла, чтобы иметь другого родителя. В этом случае вы будете использовать вызов file.update с опцией addParents , где вы можете добавить разделенный запятыми список parentIds.

Эти parentIds являются идентификаторами папки Ваш файл должен принадлежать. (Да, вы можете иметь его в нескольких местах).

Вы можете извлечь эти через API или через интерфейс:

How to select the file Id from a folder.

Вот как должен выглядеть ваш запрос:

const driveMoveOption = {
  fileId: "", //You will insert this later
  addParents: "<YOUR PARENT ID HERE>",
  removeParents: "root" //To remove it from the "MyDrive" section
}

А вот пример того, как его использовать:

sheets.spreadsheets.create(createOption, function (err, response) {
  if (err) {
    console.error(err);
    return;
  }

  //response contains the `Spreadsheet` resource we want, with it's fileId
  driveMoveOption.fileId = response.spreadsheetId; //Set the spreadsheet Id to 
  drive.files.update(driveMoveOption, function (err, response) {
    if (err) {
      console.error(err);
      return;
    }

    //response contains the structure of a Files structure: https://developers.google.com/drive/api/v3/reference/files#resource
  });
});

Создание электронной таблицы по заданным параметрам. c папка

Если вы используете вместо этого API-интерфейс Drive.files.create, вы можете использовать этот запрос:

{
  "mimeType": "application/vnd.google-apps.spreadsheet",
  "name": "Test",
  "parents": [
    "<YOUR PARENT ID HERE>"
  ]
}

и вызвать его с помощью

const driveCreateAndMoveOption = {
  "mimeType": "application/vnd.google-apps.spreadsheet",
  "name": "Test",
  "parents": [
    "<YOUR PARENT ID HERE>"
  ]
};

drive.files.update(driveCreateAndMoveOption, function (err, response) {
  if (err) {
    console.error(err);
    return;
  }

  //response contains the structure of a Files structure. Use this to get the file ID for the spreadsheet call.
});

Вставить Ваши пользовательские значения

Запрос на вставку значений в электронную таблицу должен выглядеть примерно так:

const appendOption = {
  "spreadsheetId": "", //You will insert this later
  "range": "A:A",
  "valueInputOption": "USER_ENTERED",
  "resource": {
    "values": [
      [
        "a"
      ]
    ]
  }
}

Чтобы использовать правильный SpreadsheetId, вам нужно будет запустить этот код после вы создаете его и используете это число.

Это можно сделать так:

sheets.spreadsheets.create(createOption, function (err, response) {
  if (err) {
    console.error(err);
    return;
  }

  //response contains the `Spreadsheet` resource we want, with it's fileId
  appendOption.spreadsheetId = response.spreadsheetId; //Set the spreadsheet Id to insert the values on.
  sheets.spreadsheets.values.append(appendOption, function (err, response) {
    if (err) {
      console.error(err);
      return;
    }

    //response contains the structure detailed on: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append#response-body

  });
});
0 голосов
/ 08 января 2020

Итак, как комментарий jonrsharpe , в конце концов я попытался создать пустую электронную таблицу и обновить ее (есть два вызова команды).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...