【问题标题】:How do I copy all data from one cell to another?如何将所有数据从一个单元格复制到另一个单元格?
【发布时间】:2021-09-24 18:37:17
【问题描述】:

我一直在使用 google sheet API,我需要能够相互交换 2 个单元格。我遇到的问题是我无法将所有数据从一个单元格复制到另一个单元格,总是缺少一些东西。我这里的代码可以将数据从一个单元格复制到另一个单元格,但是缺少文本和注释。

UserCredential credential;

using (var stream =
    new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
{
    string credPath = System.Environment.GetFolderPath(
        System.Environment.SpecialFolder.Personal);


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

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

// Define request parameters.
String spreadsheetId = "<ID>";

SpreadsheetsResource.GetRequest request =
        service.Spreadsheets.Get(spreadsheetId);
request.Ranges = "G16";
request.IncludeGridData = true;

Spreadsheet response = request.Execute();
CellData Cell1 = response.Sheets[0].Data[0].RowData[0].Values;

//get sheet id by sheet name
Spreadsheet spr = service.Spreadsheets.Get(spreadsheetId).Execute();
Sheet sh = spr.Sheets[0];
int sheetId = (int)sh.Properties.SheetId;

BatchUpdateSpreadsheetRequest bussr = new BatchUpdateSpreadsheetRequest();

//create the update request for cells from the first row
var update = new Request()
{
    RepeatCell = new RepeatCellRequest()
    {
        Range = new GridRange()
        {
            SheetId = sheetId,
            StartColumnIndex = 6,
            StartRowIndex = 13,
            EndColumnIndex = 7,
            EndRowIndex = 14
        },
        Cell = Cell1,
        Fields = "UserEnteredFormat"
    }
};
bussr.Requests = new List<Request>();
bussr.Requests.Add(update);
var bur = service.Spreadsheets.BatchUpdate(bussr, spreadsheetId);
bur.Execute();

有没有办法在同一个请求中复制文本/注释?

【问题讨论】:

    标签: c# .net google-sheets google-sheets-api


    【解决方案1】:

    您的字段掩码仅允许复制格式信息。在 RepeatCellRequest 中,尝试:

    Fields = "*"
    

    请参阅field mask documentation

    【讨论】: