我正在編寫一些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腳本。我會將它作爲回答後發 –