如何在C#中使用google sheet API v4添加工作表?

时间:2016-06-03 20:50:45

标签: c# google-api-dotnet-client google-sheets-api

我一直在使用Google表格API,并关注these guidelines。然而,除了谷歌的第二页之外,没有任何例子可以添加工作表并在.NET中写入新工作表。有很多js,但我不知道如何1)添加一张或2)写入新表。

我该怎么做?现在我能够在示例中看到没有任何问题,我只发现了The Google Guide对v4 C#的其他引用。我尝试回到v3,但所有文档强烈建议使用v4。

有没有人能够做到这一点?以下是我迄今为止所做的一切:

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

        // Define request parameters.
        // Add new Sheet
        string sheetName = string.Format("{0} {1}", DateTime.Now.Month, DateTime.Now.Day);
        AddSheetRequest addSheetRequest = new AddSheetRequest();
        addSheetRequest.Properties.Title = sheetName;

        // How do I tell this to update??

5 个答案:

答案 0 :(得分:9)

为将来拯救某人而头疼,以结束所有头痛。我想出了如何在经过数小时的试验和错误后添加工作表。 仍然致力于如何更新值。

以下是我的表现:

metric + tags

答案 1 :(得分:4)

我一直在寻找这个版本的Java版本,我设法得到了一个基于sparky的答案的工作版本。这应该有效:

            //Set sheet name
            //Can be any string, I chose to set it to the account name
            String sheetName = mCredential.getSelectedAccountName();

            //Create a new AddSheetRequest
            AddSheetRequest addSheetRequest = new AddSheetRequest();
            SheetProperties sheetProperties = new SheetProperties();

            //Add the sheetName to the sheetProperties
            addSheetRequest.setProperties(sheetProperties);
            addSheetRequest.setProperties(sheetProperties.setTitle(sheetName));

            //Create batchUpdateSpreadsheetRequest
            BatchUpdateSpreadsheetRequest batchUpdateSpreadsheetRequest = new BatchUpdateSpreadsheetRequest();

            //Create requestList and set it on the batchUpdateSpreadsheetRequest
            List<Request> requestsList = new ArrayList<Request>();
            batchUpdateSpreadsheetRequest.setRequests(requestsList);

            //Create a new request with containing the addSheetRequest and add it to the requestList
            Request request = new Request();
            request.setAddSheet(addSheetRequest);
            requestsList.add(request);

            //Add the requestList to the batchUpdateSpreadsheetRequest
            batchUpdateSpreadsheetRequest.setRequests(requestsList);

            //Call the sheets API to execute the batchUpdate
            mService.spreadsheets().batchUpdate(spreadsheetId,batchUpdateSpreadsheetRequest).execute();

答案 2 :(得分:2)

我也有代码添加工作表,但似乎你想出来了。以下是一些向内容添加内容的代码。它与其他人发布的内容有所不同,但它应该有助于看到这篇文章的人。

在此代码中,它会将colNames的值插入从(0,0)开始的行。因此,如果sheet使用这种表示法(row,col),那么
(0,0)=时间戳
(0,1)= VideoID的
(0,2)= videoname
(0,3)=名字
(0,4)=姓
(0,5)=电子邮件

因此整个第一行将填充colNames值

df.groupby((df.A != df.A.shift()).cumsum()).B.mean()

答案 3 :(得分:1)

仅供参考,虽然大多数文档只是使用原始JSON,但它应该将1:1映射到每种语言的构造。

例如,要更新值,您可能会执行以下操作:

var valueRange = new ValueRange(); valueRange.values = { { 1, 2, 3 }, { 4, 5, 6 } }; var range = "A1"; var update = service.Spreadsheets.Values.Update(valueRange, spreadsheetId, range); var result = update.execute();

以上是基于您的代码示例和参考文档@ https://developers.google.com/sheets/reference/rest/v4/spreadsheets.values/update的伪代码。

答案 4 :(得分:1)

进一步扩展Sam的答案。以下内容让我更新一个单元格。

            ValueRange VRx = new ValueRange();
            IList<IList<object>> xx = new List<IList<object>>();
            xx.Add(new List<object> { "test" });
            VRx.Values = xx;
            SpreadsheetsResource.ValuesResource.UpdateRequest update = service.Spreadsheets.Values.Update(VRx, spreadsheetId, "back!A19");
            update.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.RAW;
            UpdateValuesResponse result = update.Execute(); 

希望这有帮助!