2017-09-26 11 views
0

Googleスプレッドシートがあります。私のE列には、今月(例えば、Sept. 2017年)をE列で利用できない場合は、最近の月を追加したいと思います.2018年8月があり、今追加したとき(2017年9月)には追加されますが、私の要件は、新しく追加された(2017年9月)と(2017年8月)両方を維持することです。 私は最近1ヶ月間E列にいて、F列の右側にある既存の列をシフトします。私はC#を使ってこれをやっています。Googleスプレッドシートを使用して2つの列間に列を追加できないApi

static void Main(string[] args) 
{ 
    HttpClient client = new HttpClient(); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    try 
    { 
    var service = new SheetsService(new BaseClientService.Initializer() 
    { 
     HttpClientInitializer = GetCredential(), 
     ApplicationName = ApplicationName, 
    }); 
    String spreadsheetId = "1lZnvQe6lTGG81hyuQvf7HjH8YpnIadFlNHjFUq_G-5Q"; 
    String range = "E1"; 

    SpreadsheetsResource.ValuesResource.GetRequest getRequest = service.Spreadsheets.Values.Get(spreadsheetId, range); 
    Data.ValueRange response = getRequest.Execute(); 

    string recentMonth = DateTime.Now.ToString("MMM yyyy"); 
    var recentMonthArrayValue = new List<string[]>(); 
    recentMonthArrayValue.Add(new string[] { recentMonth }); 
    if (response.Values[0][0].ToString() != recentMonth) 
    { 
     DateTime now = DateTime.Now; 
     var currentMonthStartDate = new DateTime(now.Year, now.Month, 1).ToShortDateString(); 

     Data.BatchUpdateSpreadsheetRequest batchUpdateSpreadsheetRequest = new Data.BatchUpdateSpreadsheetRequest(); 
     batchUpdateSpreadsheetRequest.Requests = new List<Data.Request>(); 
     Data.Request request = new Data.Request(); 
     batchUpdateSpreadsheetRequest.Requests.Add(request); 
     request.UpdateCells = new Data.UpdateCellsRequest(); 

     var gridCoordinate = new Data.GridCoordinate(); 
     gridCoordinate.ColumnIndex = 5; 
     gridCoordinate.SheetId = 0; 
     request.UpdateCells.Start = gridCoordinate; 
     request.UpdateCells.Fields = "*"; 
     request.UpdateCells.Rows = new List<Data.RowData>(); 
     var rowData = new Data.RowData(); 
     request.UpdateCells.Rows.Add(rowData); 
     rowData.Values = new List<Data.CellData>(); 
     var cellData = new Data.CellData(); 
     cellData.UserEnteredValue = new Data.ExtendedValue(); 
     cellData.UserEnteredValue.FormulaValue = "=TEXT(\"" + currentMonthStartDate + "\",\"MMM yyyy\")"; 
     rowData.Values.Add(cellData); 
     SpreadsheetsResource.BatchUpdateRequest batchUpdateRequest = service.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, spreadsheetId); 
     batchUpdateRequest.Execute(); 
    } 
    } 
    catch (Exception e) 
    { 
    //throw; 
    } 
} 
public static UserCredential GetCredential() 
{ 
    UserCredential credential; 
    using (var stream =new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) 
    { 
    string credPath = System.Environment.GetFolderPath(
     System.Environment.SpecialFolder.Personal); 
    credPath = Path.Combine(credPath, ".credentials/sheets.googleapis.com-dotnet-quickstart.json"); 

    credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
     GoogleClientSecrets.Load(stream).Secrets, 
     Scopes, 
     "user", 
     CancellationToken.None, 
     new FileDataStore(credPath, true)).Result; 
    return credential; 
    } 
} 

答えて

0

チェックシートAPIのinsert an empty row or columnガイド:

以下spreadsheets.batchUpdate要求は、列Cの2つのブランク 列の第2の要求は、行 1 inheritBeforeに3つの空行を挿入を挿入フィールドがtrueの場合、新しい列または行に前の行または列と同じプロパティを与えるようにAPIに指示します。 それ以外の場合は、新しい列または行が のプロパティを取得します。 inheritBeforeは、1行目に行を挿入する場合はtrueになりません。

要求プロトコルは以下のとおりです。 「スプレッドシートを更新する」ガイド は、 Google APIクライアントライブラリを使用して、さまざまな言語でバッチ更新を実装する方法を示しています。

POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate 


{ 
    "requests": [ 
    { 
     "insertDimension": { 
     "range": { 
      "sheetId": sheetId, 
      "dimension": "COLUMNS", 
      "startIndex": 2, 
      "endIndex": 4 
     }, 
     "inheritBefore": true 
     } 
    }, 
    { 
     "insertDimension": { 
     "range": { 
      "sheetId": sheetId, 
      "dimension": "ROWS", 
      "startIndex": 0, 
      "endIndex": 3 
     }, 
     "inheritBefore": false 
     } 
    }, 
    ], 
} 
+0

はい、私はそれを知っているが、私は、あなたがC#のでそれを行う方法を知って.IFのC#でそれを行う私に言うことができません。 – test

関連する問題