gspread에서 구글 스프레드시트를 업데이트할 때 칸의 디스플레이 형식을 깨끗하게 하려고 합니다
10052 단어 GoogleSpreadSheetgspreadPython
개요
gspread로 전자 표에 값을 붙일 때 디스플레이 형식을 알아차리면 행복해지기 때문에 그 방법을 정리했다.
결론
붙여넣기 값 예
예를 들어, 다음을 붙여 넣습니다.
실제로 파일, BigQuery, Athena에서 읽습니다.
사례 1
아무 생각 없이 세로로 붙여.
case1.py# 前略
wkb = gc.open_by_key("xxxxxxxxxxx")
wks = wkb.worksheet("data1")
wks.clear()
cell_list = wks.range('A1:A10')
vlist=[]
vlist.append("12039")
vlist.append("1111222233334444")
vlist.append("3.141592")
vlist.append("2021-01-14")
idx=0
for val in vlist :
cell_list[idx].value = val
idx+=1
wks.update_cells(cell_list)
사례 1 결과
한순간, 응?좋지 않아요?그렇게 생각하지만 문자열이라 계산이 안 돼요.
그리고 =sum () 문자열에서 실행하면 0이 될 것 같아서 상상만 해도 무서워요.
사례 2
gspread가python의 유형을 적절하게 변환하면 칸도 좋은 느낌을 줄 수 있습니다.
그래서
case2.py#前略
idx=0
for val in vlist :
try :
val = int(val)
except :
pass
cell_list[idx].value = val
idx+=1
wks.update_cells(cell_list)
삭제합니다.
사례 2 결과
했어!?
네, 다음은 안 돼요.
- 긴 수치 손상
- 소수는 여전히 문자열
이것도 고려해야 한다.
사례 3
나는 논리적인 조합 방법이 또 다른 것이 있다고 생각하지만, 전환의 순서를 고려해야 하기 때문에 약간 복잡해진다.이번에는
# 前略
wkb = gc.open_by_key("xxxxxxxxxxx")
wks = wkb.worksheet("data1")
wks.clear()
cell_list = wks.range('A1:A10')
vlist=[]
vlist.append("12039")
vlist.append("1111222233334444")
vlist.append("3.141592")
vlist.append("2021-01-14")
idx=0
for val in vlist :
cell_list[idx].value = val
idx+=1
wks.update_cells(cell_list)
#前略
idx=0
for val in vlist :
try :
val = int(val)
except :
pass
cell_list[idx].value = val
idx+=1
wks.update_cells(cell_list)
판정
case3.py
#前略
vlist=[]
vlist.append("12039")
vlist.append("1111222233334444")
vlist.append("3.141592")
vlist.append("2021-01-14")
vlist.append("2021-01-15")
idx=0
for val in vlist :
try :
if len(val) <= 10:
val = int(val)
except :
pass
try :
if "." in val:
val = float(val)
except :
pass
cell_list[idx].value = val
idx+=1
wks.update_cells(cell_list)
사례 3 결과
느낌이 좋아요.
날짜가 있어서 다른 자리에 최신 데이터를 표시하고 싶어요.
아
날짜 유형은 문자열로 유지됩니다.
사례 4
네, 그럼 날짜형으로 바꿔서 드릴게요.
문자열은 그대로 유지되며 update_cells 옵션으로 USER_ENTERED를 내면 해결됩니다.
case4.py
#前略
idx=0
for val in vlist :
try :
if len(val) <= 10:
val = int(val)
except :
pass
try :
if "." in val:
val = float(val)
except :
pass
cell_list[idx].value = val
idx+=1
wks.update_cells(cell_list,value_input_option="USER_ENTERED")
사례 4 결과
이렇게 해서 드디어 좋은 느낌이 들었어요!
잡감
붙일 수 있느냐 못 붙일 수 있느냐가 아니라'붙였지만 좀 이상해'로 바뀌는 것이 번거롭다.
또한 적당한 유형의 BigQuery를 설정한 표에서 라이브러리에서 얻은 데이터를 상술한 것과 같은 상황에서 전환할 필요가 없다.
그러나 파일을 읽은 후에 이것도 RPA에 상당히 많은 상황이라고 나는 생각한다.
Reference
이 문제에 관하여(gspread에서 구글 스프레드시트를 업데이트할 때 칸의 디스플레이 형식을 깨끗하게 하려고 합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuji_saito/items/86b209d686268a537fa5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(gspread에서 구글 스프레드시트를 업데이트할 때 칸의 디스플레이 형식을 깨끗하게 하려고 합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuji_saito/items/86b209d686268a537fa5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)