2016-06-05 2 views
0
는 구글 문서 페이지가

구글 시트 API의 V4

말한다

행 .NET을 추가 시트에 데이터 행을 추가 할 수 spreadsheets.batchUpdate 방법으로 사용할 수있는 AppendCells 요청을 제공 않습니다 시트 API v4를 (필요하다면 동시에 셀 속성과 서식을 업데이트하십시오).

RowData 페이로드를 생성하는 작업이 지겨운 경우에도 새 행을 추가 할 수 있습니다. 그러나 ValueInputOption을 설정할 수는 없습니다.

구글은 또한

그러나, 단순히 추가 한 다음 해당 행을 덮어 쓸 수있는 spreadsheets.values.update 요청을 발행하고자하는 행의 A1 표기법을 결정하는 것이 쉽게 말한다. 이 경우 지정된 행의 모든 ​​데이터를 덮어 씁니다.

이제는 ValueInputOption을 포함하여 기존 행의 데이터를 업데이트하는 데 사용됩니다. 그러나이 값을 사용하여 새 행을 추가 할 때 (즉, 다음 행의 범위 제공) 서버는 503 오류를 반환합니다. 내가 놓친 트릭이 있어야 하나?

+1

오류 코드를 공유하여 오류가 어디서 왔는지 확인할 수 있도록하십시오. – Teyam

+0

내가 문제를 겪고있을 때의 정확한 코드를 가지고 있지 않기 때문에 아래에 코드를 추가하십시오. 아래에 게시 된 코드에는 관련 코드가 모두 있습니다. –

답변

1

의견 작성자가 제안한대로 제 질문에 코드를 게시 했어야합니다. 그러나이 대답의 일부로 게시하고 있습니다. 이는 분명히 차선책이지만 내 용도로 사용됩니다.

이 내가 값을 업데이트하고, 나는 다음 '그리드'의 크기를 확장 할 AppendCells를 호출하고합니다 (OAuth는 서비스 인스턴스를 생략) 요컨대

Public Function AddRows(Values As Object()()) As Boolean 

     Try 

      'Create dummy rows value payload 
      Dim cell2add As New CellData 
      Dim cellval As New ExtendedValue 
      cellval.NumberValue = 0 
      cell2add.UserEnteredValue = cellval 
      Dim data2add As New RowData 
      data2add.Values = {cell2add} 

      Dim rowdataList As New List(Of RowData) 
      For i = 0 To UBound(Values) 
       rowdataList.Add(data2add) 
      Next 

      'Add a request to append to the sheet's data (expand grid) 
      Dim appendRequest As New AppendCellsRequest 
      appendRequest.SheetId = SheetID 
      appendRequest.Rows = rowdataList.ToArray   
      appendRequest.Fields = "*" 
      Dim request As New Request 
      request.AppendCells = appendRequest 

      'Execute the request 
      Dim bRequest As New BatchUpdateSpreadsheetRequest 
      bRequest.Requests = {request} 
      Dim bResponse As BatchUpdateSpreadsheetResponse = Service.Spreadsheets.BatchUpdate(bRequest, DataBaseName).Execute() 

      'Now update the newly added rows with data 
      Dim index As Integer = GetRowCount() - Values.Length + 2 'GetRowCount() calls the service to get sheet metadata and returns the rows of data (excluding the headers) 
      Dim vals As New ValueRange 
      vals.Values = Values 
      Dim urequest As SpreadsheetsResource.ValuesResource.UpdateRequest = 
       Service.Spreadsheets.Values.Update(vals, DataBaseName, Name & "!A" & index) 
      urequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED 
      Dim response As UpdateValuesResponse = urequest.Execute 
      Return response.UpdatedRows = Values.Length 

     Catch ex As Exception 
      Trace.WriteLine(Now.ToLongTimeString & ":" & ex.Message) 
      Return False 
     End Try 

    End Function 

와 종료 코드입니다 따라서 빈 행이 생성됩니다. 새 행의 값을 업데이트하려고하면 서버에서 '서비스를 사용할 수 없음'오류를 반환합니다. 기존 행에서 값 (values.batchUpdate)을 업데이트하고 동일한 요청에서 새 행을 추가하는 실험을 통해이 문제를 발견했습니다. 이 경우의 오류 메시지는 '그리드 너머'업데이트에 대한 것입니다.

0

스프레드 시트. 값 채우기 (A1 표기 & ValueInputOption을 지원하는)를 통해 행을 추가하는 API가 없습니다. Google은 내부적으로 기능 요청으로이를 추적하고 지원 가능성을 높일 것입니다. 그 동안 행을 추가하는 유일한 방법은 batchUpdate 메서드를 사용하는 것입니다 (단, CellData 개체가 서식 지정과 같은 추가 기능을 필요로하지 않는다면 그렇게하는 것이 지루합니다).