我正在编写一些C#应用程序和一些Google Spreadsheets集成。我处于一种需要将工作表中的某些数据移入不同电子表格的情况。这个工作表包含大量的数据,所以我想避免遍历其内容。如何将现有Google工作表插入Google电子表格?
API指南给出an example如何在电子表格中创建新的工作表。我修改了它现有的工作表添加到电子表格:
using System;
using Google.GData.Client;
using Google.GData.Spreadsheets;
namespace MySpreadsheetIntegration
{
class Program
{
static void Main(string[] args)
{
SpreadsheetsService service = new SpreadsheetsService("MySpreadsheetIntegration-v1");
SpreadsheetEntry destinationSpreadsheet = fetchGoogleSpreadSheetEntry(service, "some_title");
SpreadsheetEntry originSpreadsheet = fetchGoogleSpreadSheetEntry(service, "some_other_title");
// Create a local representation of the new worksheet.
WorksheetEntry originWorksheet = fetchGoogleWorksheet(originSpreadsheet, "some_worksheet_title");
// Send the local representation of the worksheet to the API for
// creation. The URL to use here is the worksheet feed URL of our
// spreadsheet.
WorksheetFeed wsFeed = destinationSpreadsheet.Worksheets;
service.Insert(wsFeed, originWorksheet);
}
}
}
为了清楚起见,上面的代码试图以在“some_other_title”电子表格“some_worksheet_title”工作表,并把它纳入“some_title”电子表格。以下是上述代码中引用的功能。
public static WorksheetEntry fetchGoogleWorksheet(SpreadsheetEntry spreadsheet, string worksheet_title)
{
WorksheetFeed wsFeed = spreadsheet.Worksheets;
WorksheetEntry worksheet = null;
foreach (WorksheetEntry entry in wsFeed.Entries)
{
worksheet = entry;
if (entry.Title.Text == worksheet_title)
{
Console.WriteLine(DateTime.Now.ToString("HH:mm") + ": Worksheet found on Google Drive.");
break;
}
}
if (worksheet.Title.Text != worksheet_title)
{
return null;
}
return worksheet;
}
public static SpreadsheetEntry fetchGoogleSpreadSheetEntry(SpreadsheetsService service, string spreadsheet_title)
{
Console.WriteLine(DateTime.Now.ToString("HH:mm") + ": Looking for spreadsheet on Google Drive.");
SpreadsheetQuery query = new SpreadsheetQuery();
SpreadsheetFeed feed;
feed = service.Query(query);
SpreadsheetEntry spreadsheet = null;
// Iterate through all of the spreadsheets returned
foreach (SpreadsheetEntry entry in feed.Entries)
{
// Print the title of this spreadsheet to the screen
spreadsheet = entry;
if (entry.Title.Text == spreadsheet_title)
{
Console.WriteLine(DateTime.Now.ToString("HH:mm") + ": Spreadsheet found on Google Drive.");
Console.WriteLine(DateTime.Now.ToString("HH:mm") + ": Looking for worksheet in spreadsheet.");
break;
}
}
if (spreadsheet.Title.Text != spreadsheet_title)
{
return null;
}
return spreadsheet;
}
我希望能够获取到我想添加到电子表格中的工作表,并将其添加到电子表格中。这是行不通的。上面的代码在目标电子表格中创建(正确标题的)工作表,但不传输工作表的任何内容。
有什么办法让它正确传输内容?
我能想到的是批量更新。 (这意味着应对非常细胞)。或谷歌应用脚本有一个命令来做到这一点。您可以通过HTML服务调用Google应用程序脚本。 – eddyparkinson
@eddyparkinson我最初使用批量更新,但结果不可靠。我现在正在使用Apps脚本。我会将它作为回答后发 –