###問題点
pythonのgspreadを使ってスプレッドシートを操作しています。
シートに関数が既にあり、その関数は消したくありません。
下記のようなコードで、実行すると関数が全て無くなり、その時の文字列に変わります。
何かオプションのようなものはないでしょうか?
# python # 2次元配列に整形 def _cellsto2darray(cells, col): # colは列の数 cells2d = [] for i in range(len(cells) // col): cells2d.append(cells[i * col:(i + 1) * col]) return cells2d # 1次元配列に整形 def _cellsto1darray(cells2d): cells1d = [] for cells in cells2d: cells1d.extend(cells) return cells1d # シート取得 worksheet = workbook.worksheet('XXXXXXXXX') # 全てのセルの値を取得 all_values = worksheet.get_all_values() cell_list = worksheet.range(1 , 1 , len(all_values) , len(all_values[0])) cell_list = _cellsto2darray(cell_list , len(all_values[0])) # all_valuesと同じ形にする for row in cell_list: # 条件とかを記入して値をいれる row[0].value = row[0].value =1 worksheet.update_cells(_cellsto1darray(cell_list)) #シートに記入
備考:
worksheet.update_cells(_cellsto1darray(cell_list),value_input_option='USER_ENTERED')
USER_ENTEREDを使って見てもダメでした。
これは、シートに関数を入れた時に有効でした。
row[0].value = '=sum(B2:C2)'
ちなみに、関数の入っているセルの値を見ると式では文字列が入っていました。
シート
ご指摘をいただき追加
やりたいこととしましては、シートBのシートAの参照部分の関数を消したくありません。
シートA
A | B | C | D |
---|---|---|---|
1 | 1 | 0 | 1 |
1 | 2 | 0 | 1 |
1 | 3 | 1 | 1 |
1 | 4 | 1 | 1 |
1 | 5 | 2 | 1 |
1 | 6 | 2 | 1 |
1 | 7 | 3 | 1 |
1 | 8 | 3 | 1 |
シートB
A | B | C | D |
---|---|---|---|
='シートA'!$A1 | 0 | 0 | 0 |
='シートA'!$A2 | 0 | 0 | 0 |
='シートA'!$A3 | 0 | 1 | 0 |
='シートA'!$A4 | 0 | 1 | 0 |
='シートA'!$A5 | 0 | 2 | 0 |
='シートA'!$A6 | 0 | 2 | 0 |
='シートA'!$A7 | 0 | 3 | 0 |
='シートA'!$A8 | 0 | 3 | 0 |
回答1件
あなたの回答
tips
プレビュー