2016-07-13 1 views
1

Google 스프레드 시트를 VB.Net에서 수정하려면 Google 시트 api v4를 사용하려고했습니다. 내가 읽고 BatchGetRequest 및 BatchUpdateRequest와 파일에 쓰기 :.net에서 범위의 색상을 변경하는 방법 .net

 'Get File's Datas 
     Dim reqBatchGet As SpreadsheetsResource.ValuesResource.BatchGetRequest = service.Spreadsheets.Values.BatchGet(fileId) 
     reqBatchGet.Ranges = "'2016'!A1:AP60" 
     Dim test = reqBatchGet.Execute() 

     Dim myBatchUpdate As BatchUpdateValuesRequest = New BatchUpdateValuesRequest() 
     myBatchUpdate.ValueInputOption = "RAW" 
     myBatchUpdate.Data = New List(Of ValueRange) 


     For Each res As GetDatasMonitoringAgencyResult In result 

      Dim vrxN As ValueRange = New ValueRange() 
      Dim lstN As IList(Of IList(Of Object)) = New List(Of IList(Of Object)) 

      lstN.Add(New List(Of Object)(New Object() {res.N01, res.N02, res.N03, res.N04, res.N05, res.N06, res.N07, res.N08, res.N09, res.N10, res.N11, res.N12})) 

      For Each n In lstN 

       For Each dataInN In n 

        If dataInN Is Nothing Then 
         dataInN = "-" 
        End If 
       Next 
      Next 

      vrxN.Values = lstN 

      Dim RangeN As String = String.Format("'{0}'!D{1}:O{1}", Now.Year, res.ligne) 
      vrxN.Range = RangeN 
      vrxN.MajorDimension = "ROWS" 

      Dim vrxN_1 As ValueRange = New ValueRange() 
      Dim lstN_1 As IList(Of IList(Of Object)) = New List(Of IList(Of Object)) 

      lstN_1.Add(New List(Of Object)(New Object() {res.N_01, res.N_02, res.N_03, res.N_04, res.N_05, res.N_06, res.N_07, res.N_08, res.N_09, res.N_10, res.N_11, res.N_12})) 

      For Each n_1 In lstN_1 

       For Each dataInN_1 In n_1 

        If dataInN_1 Is Nothing Then 
         dataInN_1 = "" 
        End If 
       Next 
      Next 

      vrxN_1.Values = lstN_1 
      Dim RangeN_1 As String = String.Format("'{0}'!AD{1}:AO{1}", Now.Year.ToString(), res.ligne) 
      vrxN_1.Range = RangeN_1 
      vrxN_1.MajorDimension = "ROWS" 

      myBatchUpdate.Data.Add(vrxN) 
      myBatchUpdate.Data.Add(vrxN_1) 
     Next 
     Dim reqBatchUpdate As SpreadsheetsResource.ValuesResource.BatchUpdateRequest = service.Spreadsheets.Values.BatchUpdate(myBatchUpdate, fileId) 

     reqBatchUpdate.Execute() 

지금, 나는 몇 가지 세포의 색상을 변경합니다. 나는 conditionalRule으로 시도 : (값이 MIN, 숫자 형식 또는 최대 인 경우) 조건에 해당하는 경우 그것은 작동하지만 난 그냥 조건없이 색상 범위를 변경하려는

Dim req As Request = New Request() 
     Dim acfrr As AddConditionalFormatRuleRequest = New AddConditionalFormatRuleRequest() 
     acfrr.Rule = New ConditionalFormatRule() 
     Dim range1 As GridRange = New GridRange() 
     range1.SheetId = 0 
     range1.StartColumnIndex = 1 
     range1.StartRowIndex = 1 
     acfrr.Rule.Ranges = New List(Of GridRange) 
     acfrr.Rule.Ranges.Add(range1) 
     acfrr.Rule.GradientRule = New GradientRule() 
     acfrr.Rule.GradientRule.Minpoint = New InterpolationPoint() 
     acfrr.Rule.GradientRule.Minpoint.Type = "MIN" 
     acfrr.Rule.GradientRule.Minpoint.Color = New Google.Apis.Sheets.v4.Data.Color() 
     acfrr.Rule.GradientRule.Minpoint.Color.Red = 1 
     acfrr.Rule.GradientRule.Minpoint.Color.Green = 0 
     acfrr.Rule.GradientRule.Minpoint.Color.Blue = 0 
     acfrr.Rule.GradientRule.Midpoint = New InterpolationPoint() 
     acfrr.Rule.GradientRule.Midpoint.Type = "NUMBER" 
     acfrr.Rule.GradientRule.Midpoint.Value = 0.5 
     acfrr.Rule.GradientRule.Midpoint.Color = New Google.Apis.Sheets.v4.Data.Color() 
     acfrr.Rule.GradientRule.Midpoint.Color.Red = 0 
     acfrr.Rule.GradientRule.Midpoint.Color.Green = 1 
     acfrr.Rule.GradientRule.Midpoint.Color.Blue = 0 
     acfrr.Rule.GradientRule.Maxpoint = New InterpolationPoint() 
     acfrr.Rule.GradientRule.Maxpoint.Type = "MAX" 
     acfrr.Rule.GradientRule.Maxpoint.Color = New Google.Apis.Sheets.v4.Data.Color() 
     acfrr.Rule.GradientRule.Maxpoint.Color.Red = 0 
     acfrr.Rule.GradientRule.Maxpoint.Color.Green = 0 
     acfrr.Rule.GradientRule.Maxpoint.Color.Blue = 1 
     acfrr.Index = 0 
     req.AddConditionalFormatRule = acfrr 
     Dim testReq As BatchUpdateSpreadsheetRequest = New BatchUpdateSpreadsheetRequest() 
     testReq.Requests = New List(Of Request) 
     testReq.Requests.Add(req) 
     Dim responseAddConditionalRules = service.Spreadsheets.BatchUpdate(testReq, fileId).Execute 

. 그러나 나는 그것을하는 방법을 이해하는 모범을 찾지 못한다.

답변

-1

조건부 형식 규칙은 조건부입니다. 조건이 true 인 경우에만 그라디언트의 배율에 따라 다양한 색상이 적용됩니다.

셀의 배경색을 무조건 설정하려면 다음과 같이하십시오. 셀의 배경색을 설정하십시오. Samples - Formatting 페이지에는이를 수행하는 방법에 대한 많은 예제가 있습니다. 특히 : Format a header row

당신의 대답에 대한



    POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate 
    { 
     "requests": [ 
     { 
      "repeatCell": { 
      "range": { 
       "sheetId": sheetId, 
       "startRowIndex": 0, 
       "endRowIndex": 1 
      }, 
      "cell": { 
       "userEnteredFormat": { 
       "backgroundColor": { 
        "red": 0.0, 
        "green": 0.0, 
        "blue": 0.0 
       }, 
       "horizontalAlignment" : "CENTER", 
       "textFormat": { 
        "foregroundColor": { 
        "red": 1.0, 
        "green": 1.0, 
        "blue": 1.0 
        }, 
        "fontSize": 12, 
        "bold": true 
       } 
       } 
      }, 
      "fields": "userEnteredFormat(backgroundColor,textFormat,horizontalAlignment)" 
      } 
     }, 
     { 
      "updateSheetProperties": { 
      "properties": { 
       "sheetId": sheetId, 
       "gridProperties": { 
       "frozenRowCount": 1 
       } 
      }, 
      "fields": "gridProperties.frozenRowCount" 
      } 
     } 
     ] 
    } 

+0

감사합니다, (클라이언트 라이브러리의로 똑 바르게 번역하는 것) 해당 페이지에서 JSON 복사,하지만 당신은 C# 언어와 예를 들어 있나요? 내 요청에 대한 Google의 개체를 사용하고 그것을 초기화하는 방법을 모르겠습니다. – JonathanTheBrosh

0
string spreadsheetId = "1DD3zfGe6.......UtENHhnBwz0CA"; 

//get sheet id by sheet name 
Spreadsheet spr = service.Spreadsheets.Get(spreadsheetId).Execute(); 
Sheet sh = spr.Sheets.Where(s => s.Properties.Title == sheetName).FirstOrDefault(); 
int sheetId = (int)sh.Properties.SheetId; 

//define cell color 
var userEnteredFormat = new CellFormat() 
{ 
    BackgroundColor = new Color() 
    { 
     Blue = 0, 
     Red = 1, 
     Green = (float)0.5, 
     Alpha = (float)0.1 
    }, 
    TextFormat = new TextFormat() 
    { 
     Bold = true 
    } 
}; 
BatchUpdateSpreadsheetRequest bussr = new BatchUpdateSpreadsheetRequest(); 

//create the update request for cells from the first row 
var updateCellsRequest = new Request() 
{ 
    RepeatCell = new RepeatCellRequest() 
    { 
     Range = new GridRange() 
     { 
      SheetId = sheetId, 
      StartColumnIndex = 0, 
      StartRowIndex = 0, 
      EndColumnIndex = 28, 
      EndRowIndex = 1 
     }, 
     Cell = new CellData() 
     { 
      UserEnteredFormat = userEnteredFormat 
     }, 
     Fields = "UserEnteredFormat(BackgroundColor,TextFormat)" 
    } 
}; 
bussr.Requests = new List<Request>(); 
bussr.Requests.Add(updateCellsRequest);    
bur = service.Spreadsheets.BatchUpdate(bussr, spreadsheetId); 
bur.Execute(); 
관련 문제