Skip to content

Instantly share code, notes, and snippets.

@viebel
Created August 29, 2019 13:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save viebel/810efff7b63380c88dd11cbd098859d5 to your computer and use it in GitHub Desktop.
Save viebel/810efff7b63380c88dd11cbd098859d5 to your computer and use it in GitHub Desktop.
(->
service
.spreadsheets
(.batchUpdate "1zC8gFo20z0WdldYEQ1KuC0jGFZjHZI14fauFmCQ4H4s"
(make-batch-update [(-> (CreateDeveloperMetadataRequest.)
(.setDeveloperMetadata (-> (DeveloperMetadata.)
(.setMetadataId (int 1232))
(.setMetadataKey "foofoo")
(.setMetadataValue "123")
(.setLocation (-> (DeveloperMetadataLocation.)
(.setSheetId (int 0))
(.setDimensionRange (-> (DimensionRange.)
(.setDimension "A3"))))))))]))
.execute)
@stask
Copy link

stask commented Aug 29, 2019

You should do something like this:

(make-batch-update [(-> (Request.) (.setCreateDeveloperMetadata (-> (CreateDeveloperMetadataRequest.) ....)))])

@viebel
Copy link
Author

viebel commented Aug 29, 2019

I tried

 (->
   service
   .spreadsheets
   (.batchUpdate "1zC8gFo20z0WdldYEQ1KuC0jGFZjHZI14fauFmCQ4H4s"
                 (make-batch-update [(-> (Request.)
                                         (.setCreateDeveloperMetadata
                                          (-> (CreateDeveloperMetadataRequest.)
                                              (.setDeveloperMetadata (-> (DeveloperMetadata.)
                                                                         (.setMetadataKey "baba")
                                                                         (.setMetadataValue "123")
                                                                         (.setLocation (-> (DeveloperMetadataLocation.)
                                                                                           (.setSheetId (int 0))
                                                                                           (.setDimensionRange (-> (DimensionRange.)
                                                                                                                   (.setDimension "A5"))))))))))]))
   .execute)

And now I get a different error:

 Unhandled com.google.api.client.googleapis.json.GoogleJsonResponseException
   400 Bad Request { "code" : 400, "errors" : [ { "domain" : "global", "message"
   : "Invalid value at
   'requests[0].create_developer_metadata.developer_metadata.location.dimension_range.dimension'
   (TYPE_ENUM), \"A5\"\nInvalid value at
   'requests[0].create_developer_metadata.developer_metadata.location' (oneof),
   oneof field 'location' is already set. Cannot set 'sheetId'", "reason" :
   "badRequest" } ], "message" : "Invalid value at
   'requests[0].create_developer_metadata.developer_metadata.location.dimension_range.dimension'
   (TYPE_ENUM), \"A5\"\nInvalid value at
   'requests[0].create_developer_metadata.developer_metadata.location' (oneof),
   oneof field 'location' is already set. Cannot set 'sheetId'", "status" :
   "INVALID_ARGUMENT" }


@stask
Copy link

stask commented Aug 29, 2019

;; DimensionRange
(s/def :dimension-range/sheet-id nat-int?)
(s/def :dimension-range/dimension #{"ROWS" "COLUMNS"})
(s/def :dimension-range/start-index nat-int?)
(s/def :dimension-range/end-index nat-int?)
(s/def ::dimension-range (s/keys :req [:dimension-range/sheet-id
                                       :dimension-range/dimension
                                       :dimension-range/start-index
                                       :dimension-range/end-index]))

(defn dimension-range [data]
  (let [v (s/assert ::dimension-range data)]
    (cond-> (DimensionRange.)
      :always (.setSheetId (int (:dimension-range/sheet-id v)))
      :always (.setDimension (:dimension-range/dimension v))
      :always (.setStartIndex (int (:dimension-range/start-index v)))
      (:dimension-range/end-index v) (.setEndIndex (int (:dimension-range/end-index v))))))

(s/fdef dimension-range
        :args (s/cat :data ::dimension-range)
        :ret (partial instance? DimensionRange))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment