스프레드시트 만들기 및 관리

이 문서에서는 Google Sheets API를 사용하여 Google Sheets에서 스프레드시트를 만들고 관리하는 방법을 설명합니다.

스프레드시트 만들기

Sheets에서 파일을 만들려면 매개변수 없이 spreadsheets 리소스에서 create 메서드를 사용합니다.

파일을 만들면 메서드가 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);
  }
};

자바

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")

Ruby

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 폴더에서 스프레드시트 정리하기

기본적으로 생성된 스프레드시트는 Drive의 사용자 루트 폴더에 저장됩니다.

스프레드시트를 지정된 Google Drive 폴더에 저장하려면 다음 방법을 사용하세요.

두 대안 모두 호출을 승인하려면 적절한 Drive API 범위를 추가해야 합니다.

공유 드라이브 폴더 내에서 파일을 이동하거나 만들려면 공유 드라이브 지원 구현을 참고하세요.

Google Sheets의 셀 및 행 한도에 관해 자세히 알아보려면 Google Drive에 저장할 수 있는 파일을 참고하세요.

스프레드시트 가져오기

스프레드시트를 가져오려면 spreadsheetId 경로 매개변수를 사용하여 spreadsheets 리소스에서 get 메서드를 사용합니다.

이 메서드는 파일을 spreadsheets 리소스의 인스턴스로 반환합니다. 기본적으로 스프레드시트 내의 데이터는 반환되지 않습니다. 반환된 리소스에는 스프레드시트 속성 (예: 제목, 언어, 시간대) 및 일부 세부 시트 정보 (예: 서식 및 보호된 범위)를 비롯한 스프레드시트의 구조와 메타데이터가 포함됩니다.

spreadsheets 리소스 내에 데이터를 포함하려면 다음 두 가지 방법을 사용하세요.

  • fields 시스템 매개변수를 설정하여 선택한 필드를 나열하는 필드 마스크를 지정합니다.

  • 불리언 includeGridData 쿼리 매개변수를 true로 설정합니다. 필드 마스크가 설정되면 includeGridData 매개변수가 무시됩니다.

대형 스프레드시트로 작업할 때는 필요한 특정 스프레드시트 필드만 쿼리하는 것이 좋습니다. get 메서드는 스프레드시트와 연결된 모든 데이터를 반환하므로 대규모 스프레드시트에 대한 일반적인 쿼리는 느릴 수 있습니다. 예를 들어 셀에서 숫자 100을 읽으려면 spreadsheets.get가 셀 값과 메타데이터 (예: 글꼴 이름, 크기 등)를 반환하므로 파싱 속도가 느린 큰 JSON 페이로드가 생성됩니다. 반면 values.get에 대한 유사한 호출은 특정 셀 값만 반환하므로 훨씬 가볍고 빠른 응답이 제공됩니다.

spreadsheets.values.getspreadsheets.values.batchGet를 비롯한 spreadsheets.values 리소스에 대한 자세한 내용은 다음 문서를 참고하세요.

다음과 같은 몇 가지 단계를 시도해 볼 수 있습니다.