Создание и управление электронными таблицами

В этом документе объясняется, как создавать и управлять электронными таблицами в Google Sheets с помощью API Google Sheets.

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

Для создания файла в Google Sheets используйте метод create ресурса spreadsheets без параметров.

При создании файла метод возвращает ресурс spreadsheets . Возвращаемый ресурс содержит идентификатор spreadsheetId , properties , список sheets ) и spreadsheetUrl .

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

Apps Script

sheets/api/spreadsheet_snippets.gs
/**
 * Creates a new sheet using the sheets advanced services
 * @param {string} title the name of the sheet to be created
 * @returns {string} the spreadsheet ID
 */
Snippets.prototype.create = (title) => {
  // This code uses the Sheets Advanced Service, but for most use cases
  // the built-in method SpreadsheetApp.create() is more appropriate.
  try {
    const sheet = Sheets.newSpreadsheet();
    sheet.properties = Sheets.newSpreadsheetProperties();
    sheet.properties.title = title;
    const spreadsheet = Sheets.Spreadsheets.create(sheet);

    return spreadsheet.spreadsheetId;
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log("Failed with error %s", err.message);
  }
};

Java

sheets/snippets/src/main/java/Create.java
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.sheets.v4.Sheets;
import com.google.api.services.sheets.v4.SheetsScopes;
import com.google.api.services.sheets.v4.model.Spreadsheet;
import com.google.api.services.sheets.v4.model.SpreadsheetProperties;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.Collections;

/* Class to demonstrate the use of Spreadsheet Create API */
public class Create {
  /**
   * Create a new spreadsheet.
   *
   * @param title - the name of the sheet to be created.
   * @return newly created spreadsheet id
   * @throws IOException - if credentials file not found.
   */
  public static String createSpreadsheet(String title) throws IOException {
        /* Load pre-authorized user credentials from the environment.
           TODO(developer) - See https://developers.google.com/identity for
            guides on implementing OAuth2 for your application. */
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
        .createScoped(Collections.singleton(SheetsScopes.SPREADSHEETS));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Create the sheets API client
    Sheets service = new Sheets.Builder(new NetHttpTransport(),
        GsonFactory.getDefaultInstance(),
        requestInitializer)
        .setApplicationName("Sheets samples")
        .build();

    // Create new spreadsheet with a title
    Spreadsheet spreadsheet = new Spreadsheet()
        .setProperties(new SpreadsheetProperties()
            .setTitle(title));
    spreadsheet = service.spreadsheets().create(spreadsheet)
        .setFields("spreadsheetId")
        .execute();
    // Prints the new spreadsheet id
    System.out.println("Spreadsheet ID: " + spreadsheet.getSpreadsheetId());
    return spreadsheet.getSpreadsheetId();
  }
}

JavaScript

sheets/snippets/sheets_create.js
function create(title, callback) {
  try {
    gapi.client.sheets.spreadsheets.create({
      properties: {
        title: title,
      },
    }).then((response) => {
      if (callback) callback(response);
      console.log('Spreadsheet ID: ' + response.result.spreadsheetId);
    });
  } catch (err) {
    document.getElementById('content').innerText = err.message;
    return;
  }
}

Node.js

sheets/snippets/sheets_create.js
import {GoogleAuth} from 'google-auth-library';
import {google} from 'googleapis';

/**
 * Creates a new Google Spreadsheet.
 * @param {string} title The title of the new spreadsheet.
 * @return {string} The ID of the created spreadsheet.
 */
async function create(title) {
  // Authenticate with Google and get an authorized client.
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/spreadsheets',
  });

  // Create a new Sheets API client.
  const service = google.sheets({version: 'v4', auth});

  // The resource body for creating a new spreadsheet.
  const resource = {
    properties: {
      title,
    },
  };

  // Create the new spreadsheet.
  const spreadsheet = await service.spreadsheets.create({
    resource,
    fields: 'spreadsheetId',
  });

  // Log the ID of the new spreadsheet.
  console.log(`Spreadsheet ID: ${spreadsheet.data.spreadsheetId}`);
  return spreadsheet.data.spreadsheetId;
}

PHP

sheets/snippets/src/SpreadsheetCreate.php
<?php
use Google\Client;
use Google\Service\Drive;
use Google\Service\Sheets\SpreadSheet;

/**
* create an empty spreadsheet
* 
*/

 function create($title)
    {   
        /* Load pre-authorized user credentials from the environment.
           TODO(developer) - See https://developers.google.com/identity for
            guides on implementing OAuth2 for your application. */
        $client = new Google\Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Google\Service\Drive::DRIVE);
        $service = new Google_Service_Sheets($client);
        try{

            $spreadsheet = new Google_Service_Sheets_Spreadsheet([
                'properties' => [
                    'title' => $title
                    ]
                ]);
                $spreadsheet = $service->spreadsheets->create($spreadsheet, [
                    'fields' => 'spreadsheetId'
                ]);
                printf("Spreadsheet ID: %s\n", $spreadsheet->spreadsheetId);
                return $spreadsheet->spreadsheetId;
        }
        catch(Exception $e) {
            // TODO(developer) - handle error appropriately
            echo 'Message: ' .$e->getMessage();
          }
    }

Python

sheets/snippets/sheets_create.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def create(title):
  """
  Creates the Sheet the user has access to.
  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()
  # pylint: disable=maybe-no-member
  try:
    service = build("sheets", "v4", credentials=creds)
    spreadsheet = {"properties": {"title": title}}
    spreadsheet = (
        service.spreadsheets()
        .create(body=spreadsheet, fields="spreadsheetId")
        .execute()
    )
    print(f"Spreadsheet ID: {(spreadsheet.get('spreadsheetId'))}")
    return spreadsheet.get("spreadsheetId")
  except HttpError as error:
    print(f"An error occurred: {error}")
    return error


if __name__ == "__main__":
  # Pass: title
  create("mysheet1")

Руби

sheets/snippets/lib/spreadsheet_snippets.rb
spreadsheet = {
  properties: {
    title: 'Sales Report'
  }
}
spreadsheet = service.create_spreadsheet(spreadsheet,
                                         fields: 'spreadsheetId')
puts "Spreadsheet ID: #{spreadsheet.spreadsheet_id}"

Организуйте электронные таблицы в папках Google Drive.

По умолчанию созданная электронная таблица сохраняется в корневой папке пользователя на Google Диске.

Чтобы сохранить электронную таблицу в указанную папку на Google Диске, воспользуйтесь следующими способами:

В любом из этих случаев вам потребуется добавить соответствующие области действия API Drive для авторизации вызова.

Если ваше приложение использует учетную запись службы, то созданная электронная таблица принадлежит этой учетной записи. Затем этот файл размещается в выделенном хранилище Google Диска, принадлежащем этой учетной записи. Файлы не отображаются в других учетных записях хранилища Google Диска, если они не предоставлены в явном виде. Для получения дополнительной информации см. раздел «Владение файлами» .

Для перемещения или создания файлов в папке общего диска обратитесь к разделу «Реализация поддержки общих дисков» .

Чтобы узнать больше об ограничениях на количество ячеек и строк в Google Таблицах, см. раздел «Файлы, которые можно хранить в Google Диске» .

Получите электронную таблицу

Чтобы получить доступ к электронной таблице, используйте метод get ресурса spreadsheets с параметром пути ` spreadsheetId .

Метод возвращает файл в виде экземпляра ресурса spreadsheets . По умолчанию данные внутри электронной таблицы не возвращаются. Возвращаемый ресурс содержит структуру и метаданные электронной таблицы, включая свойства электронной таблицы (такие как заголовок, язык и часовой пояс) и некоторую подробную информацию о листе (например, форматирование и защищенные диапазоны).

Для добавления данных в электронные spreadsheets используйте два следующих метода:

  • Укажите маску полей , содержащую список выбранных вами полей, задав системный параметр fields .

  • Установите логический параметр запроса includeGridData в true . Если задана маска поля, параметр includeGridData игнорируется.

При работе с большими электронными таблицами мы рекомендуем запрашивать только необходимые поля. Метод get возвращает все данные, связанные с таблицей, поэтому общие запросы к большим таблицам могут быть медленными. Например, чтобы прочитать число 100 из ячейки, метод spreadsheets.get возвращает значение ячейки плюс метаданные (например, название шрифта, размер и т. д.), что приводит к большим JSON-данным, которые медленно обрабатываются. В сравнении с этим, аналогичный вызов метода values.get возвращает только значение конкретной ячейки, что обеспечивает гораздо более легкий и быстрый ответ.

Для получения дополнительной информации о ресурсе spreadsheets.values , включая spreadsheets.values.get и spreadsheets.values.batchGet , см. следующие документы:

Списки электронных таблиц

API Google Sheets не предоставляет способа отображения списка электронных таблиц для авторизованных пользователей.

Чтобы получить список электронных таблиц, можно использовать метод list API Google Drive для ресурса files , указав application/vnd.google-apps.spreadsheet в качестве mimeType :

HTTP

GET https://www.googleapis.com/drive/v3/files?q=mimeType='application/vnd.google-apps.spreadsheet'

cURL

curl -X GET "https://www.googleapis.com/drive/v3/files?q=mimeType='application/vnd.google-apps.spreadsheet'" \
 -H "Authorization: Bearer ACCESS_TOKEN" \
 -H "Accept: application/json"

Замените ACCESS_TOKEN на токен доступа, предоставляющий доступ к API.

Для использования метода files.list для отображения списка электронных таблиц пользователя требуется ограниченная область действия API Google Drive.

Вот несколько дальнейших шагов, которые вы можете попробовать: