Google Sheets C#API-在表格中插入行时“执行请求失败”

时间:2018-07-27 17:34:38

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

我正在使用Google Sheets API,但遇到一个不确定的错误,我不确定该如何解决。当我尝试在工作表中插入一行时,它告诉我带有URL且没有更多信息的“执行请求失败”。我之前曾遇到过此问题,并了解了如何创建密钥并获得对工作表的授权访问。我可以很好地编辑预先存在的行,以及读取数据。但不允许插入行。这是堆栈跟踪:

at Google.GData.Client.GDataRequest.Execute()
at Google.GData.Client.Service.EntrySend(Uri feedUri, AtomBase baseEntry, GDataRequestType type, AsyncSendData data)
at Google.GData.Client.Service.Insert(Uri feedUri, AtomEntry newEntry, AsyncSendData data)
at Google.GData.Client.Service.Insert[TEntry](Uri feedUri, TEntry entry)
at Google.GData.Client.Service.Google.GData.Client.IService.Insert(AtomFeed feed, AtomEntry entry)
at Google.GData.Client.Service.Insert[TEntry](AtomFeed feed, TEntry entry)

这是我用于工作表的代码:

public static void WriteDataToLine(SpreadsheetsService service, WorksheetEntry sheet, string keyId, int row, 
        params string[] data)
    {
        AtomLink listFeedLink = sheet.Links.FindService(GDataSpreadsheetsNameTable.ListRel, null);

        ListQuery query = new ListQuery(listFeedLink.HRef.ToString() + "?key=" + keyId);
        ListFeed feed = service.Query(query);

        if (feed.Entries.Count > row)
        {
            // Write over a preexisting row
            ListEntry entry = (ListEntry)feed.Entries[row];
            for (int i = 0; i < data.Count(); i++)
            {
                entry.Elements[i].Value = data[i];
            }
            entry.Update();
        }
        else
        {
            // Add a new row
            ListEntry entry = new ListEntry();
            for (int i = 0; i < data.Count(); i++)
            {
                entry.Elements.Add(new ListEntry.Custom { Value = data[i] });
            }
            service.Insert(feed, entry);
        }
    }

除了URL末尾的扩展名“?key =”(加上keyId)(顺便说一句,在添加此身份验证之前我遇到了相同的错误),我还使用了Key.p12带有X509Certificate2对象的文件。我发现这两件事有助于验证工作表的访问权限,但仍然无法正常工作。

最后一件事:我设法通过Web浏览器访问错误消息给出的URL。它只是一堆XML,但是使用API​​时出现错误。

编辑:我卸载了以前拥有的软件包并安装了Google Sheets API v4。我仍然遇到同样的问题,仍然可以编辑行但不能插入行。

0 个答案:

没有答案