C#: Google スプレッドシートに行データを追加する例 (Google Sheets API v4)

Google Sheets API v4 を使用して、Google スプレッドシートに行データを追加します。

注意

  • .NET Quickstart の Step 3 をもとに、行の追加部分を加えたものになります。Step 1, 2, 4 はリンク先と同じです。

コード例 (C#)

using Google.Apis.Auth.OAuth2;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;

namespace SheetsQuickstart
{
    class Program
    {
        // If modifying these scopes, delete your previously saved credentials
        // at ~/.credentials/sheets.googleapis.com-dotnet-quickstart.json
        static string[] Scopes = { SheetsService.Scope.Spreadsheets };
        static string ApplicationName = "Google Sheets API .NET Quickstart";

        static void Main(string[] args)
        {
            UserCredential credential;

            using (var stream =
                new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
            {
                // The file token.json stores the user's access and refresh tokens, and is created
                // automatically when the authorization flow completes for the first time.
                string credPath = "token.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            // Create Google Sheets API service.
            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });

            // -- 変更部分 ここから -------------------------------------------------------------------------------------------

            // Define request parameters.
            // (スプレッドシートのURLに記載されているIDを記載します。書き込む権限があるシートのIDを指定してください)
            var spreadsheetId = "...";
            
            // 値を書き込む起点 (書き込もうとする場所に値がある場合は値が無い行まで移動して行が追加されます)
            var range = "シート1!A2";
            
            // 書き込む値
            List<IList<object>> values = new List<IList<object>>()
            {
                new List<object>() { "行1列1", "行1列2", "行1列3" },
                new List<object>() { "行2列1", "行2列2", "行2列3" },
                new List<object>() { "行3列1", "行3列2", "行3列3" },
            };

            // 書き込み
            var request = service.Spreadsheets.Values.Append(new ValueRange() { Values = values }, spreadsheetId, range);
            request.InsertDataOption = SpreadsheetsResource.ValuesResource.AppendRequest.InsertDataOptionEnum.INSERTROWS;
            request.ValueInputOption = SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum.RAW;
            var response = request.Execute();

            // -- 変更部分 ここまで -------------------------------------------------------------------------------------------

            Console.Read();
        }
    }
}