@@ -183,8 +183,10 @@ def _get_raw_values(self) -> List[List[str]]:
183183 # Set _rid value according to the insert protocol.
184184 raw = ["=ROW()" ]
185185
186- for field_name in row ._fields :
187- value = _escape_val (getattr (row , field_name ))
186+ for field_name , field in row ._fields .items ():
187+ field_is_formula = field ._is_formula
188+ raw_value = getattr (row , field_name )
189+ value = raw_value if field_is_formula else _escape_val (raw_value )
188190 raw .append (value )
189191
190192 raw_values .append (raw )
@@ -246,7 +248,8 @@ def _update_rows(self, indices: List[int]) -> None:
246248 if col not in self ._update_values :
247249 continue
248250
249- value = _escape_val (self ._update_values [col ])
251+ field_is_formula = self ._store ._object_cls ._fields [col ]._is_formula
252+ value = self ._update_values [col ] if field_is_formula else _escape_val (self ._update_values [col ])
250253 cell_selector = _A1CellSelector .from_rc (col_idx + 2 , row_idx )
251254 update_range = _A1Range (self ._store ._sheet_name , cell_selector , cell_selector )
252255 requests .append (_BatchUpdateRowsRequest (update_range , [[value ]]))
@@ -320,9 +323,10 @@ def _escape_val(val: Any) -> Any:
320323 return val
321324
322325
323- __pdoc__ = {}
324- __pdoc__ ["CountStmt" ] = CountStmt .__init__ .__doc__
325- __pdoc__ ["SelectStmt" ] = SelectStmt .__init__ .__doc__
326- __pdoc__ ["InsertStmt" ] = InsertStmt .__init__ .__doc__
327- __pdoc__ ["DeleteStmt" ] = DeleteStmt .__init__ .__doc__
328- __pdoc__ ["UpdateStmt" ] = UpdateStmt .__init__ .__doc__
326+ __pdoc__ = {
327+ "CountStmt" : CountStmt .__init__ .__doc__ ,
328+ "SelectStmt" : SelectStmt .__init__ .__doc__ ,
329+ "InsertStmt" : InsertStmt .__init__ .__doc__ ,
330+ "DeleteStmt" : DeleteStmt .__init__ .__doc__ ,
331+ "UpdateStmt" : UpdateStmt .__init__ .__doc__ ,
332+ }
0 commit comments