最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

2017年1月30日 星期一

Google Sheets API v4 使用 C# (3) --- 添加寫入 Google Spreadsheet

繼前一篇 Google Sheets API v4 使用 C# (2) --- 更新寫入 Google Spreadsheet 文章,再將添加寫入一起分享。
以下內容為更新寫入。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.IO;
using System.Threading;
using System.Threading.Tasks;

namespace WriteGoogleSheet
{
    class Program
    {
        static string[] Scopes = { SheetsService.Scope.Spreadsheets };
        static string ApplicationName = "Update Google Sheet Data with Google Sheets API v4";
        static String spreadsheetId = "1SyfODMfB1t7kpZ-CscOUIXdl6wHoHwYsxIjsbzMfzSk";
        static string sheetName = "AppendRow";

        static void Main(string[] args)
        {
            var service = OpenSheet();
            //每秒寫入一次時間到 Google Sheet
            while (true)
            {
                AppendRow(service);
                System.Threading.Thread.Sleep(10000);
            }
        }

        static SheetsService OpenSheet()
        {
            UserCredential credential;
            using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
            {
                string credPath = System.Environment.GetFolderPath(
                    System.Environment.SpecialFolder.Personal);
                credPath = Path.Combine(credPath, ".credentials/sheets.googleapis.com-dotnet-quickstart.json");

                //存儲憑證到credPath
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            //建立一個API服務,設定請求參數
            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });
            return service;
        }

        static void AppendRow(SheetsService service)
        {
            String range = sheetName + "!A1";
            List<object> list1 = new List<object>() { "Item", "Cost", "Stocked", "Ship Date" };
            List<object> list2 = new List<object>() { "Wheel", "$20.50", "4", "3/1/2016" };
            List<object> list3 = new List<object>() { "Door", "$15", "2", "3/15/2016" };
            List<object> list4 = new List<object>() { "Engine", "$100", "1", "30/20/2016" };
            List<object> list5 = new List<object>() { "Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)" };
            IList<IList<Object>> list = new List<IList<Object>>() { list1, list2, list3, list4, list5 };

            ValueRange VRange = new ValueRange();
            VRange.Range = range;
            VRange.Values = list;

            SpreadsheetsResource.ValuesResource.AppendRequest upd
                = service.Spreadsheets.Values.Append(VRange, spreadsheetId, range);
            upd.ValueInputOption = SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum.USERENTERED;
            AppendValuesResponse responses = upd.Execute();
            Console.WriteLine(responses.Updates.UpdatedRange);
        }       
    }
}
執行結果:


相關文章:
參考資料: