0

UpdateCellsRequestを使用してセル範囲の書式を更新しようとしましたが、範囲内の最初のセルのみを更新しています。UpdateCellsRequest - 期待どおりに動作しない範囲

let fixFormats =() => { 
    return new Promise((resolve, reject) => { 
     var sheets = google.sheets('v4'); 

     var options = { 
      auth: auth, 
      spreadsheetId: spreadsheetId, 
      resource: { 
       requests: [{ 
        updateCells: { 
         range: { 
          sheetId: 0, 
          startColumnIndex: 0, 
          endColumnIndex: 2, 
         }, 
         rows: [{ 
          values: { 
           userEnteredFormat: { 
            numberFormat: { 
             type: "CURRENCY", 
             pattern: "$#,##0.00" 
            } 
           } 
          } 
         }], 
         fields: "userEnteredFormat.numberFormat", 
        } 
       }] 
      } 
     } 

     sheets.spreadsheets.batchUpdate(options, (err, res) => { 
      if (err) { 
       reject(err); 
      } else { 
       resolve(res); 
       console.log(res); 
      } 
     }); 
    }); 
} 

this postによると、可能である必要があります。私はリファレンスドキュメントを見て、リクエストが正しくフォーマットされていることを確認しました。 rangeの定義方法に特に注意してください。

編集:(包括的)startColumnIndexとendColumnIndex(独占)からのより多くの混乱を招く行動..

sheetId中:0、startColumnIndex:0は、endColumnIndex:2 のみ ながら...例えば、セルA1を更新sheetId:0、startColumnIndex:0、endColumnIndex:3 同じですか。 0、startColumnIndex:1、endColumnIndex:2 が続いてのみ、列B(colIndex:1)

しかし... sheetIdものの場合

更新されます...

が、これはバグですか、私は何かが足りないのですか?

編集:リクエストによる出力...正しいレスポンスが表示されているかどうかわかりません。

{ spreadsheetId: '<mysheet>', 
    replies: [ {} ], 
    updatedSpreadsheet: 
    { spreadsheetId: '<mysheet>', 
    properties: 
     { title: 'OLR', 
     locale: 'en_US', 
     autoRecalc: 'ON_CHANGE', 
     timeZone: 'America/Los_Angeles', 
     defaultFormat: [Object] }, 
    sheets: [ [Object], [Object], [Object], [Object], [Object], [Object] ], 
    namedRanges: [ [Object] ], 
    spreadsheetUrl: 'https://docs.google.com/a/company.com/spreadsheets/d/<mysheet>/edit' } } 

私JSON.stringifyは、それが与える応答は、範囲内のすべてのセルの書式場合には、細胞がたくさんある、と思われます。それでも、選択された3つの列のうち、最初の列の最初のセルは更新されますが、残りは変更されません。

+0

ログをこの場所で共有できますか? –

+0

メインポストを更新しました。コメントが長すぎます。 – Martin

答えて

0

これがわかりました!私は 'updateCells'の代わりに 'repeatCells'関数を使用してこれを動作させることができましたが、その機能の意図された目的のように思われるため、なぜ動作しないのか分かりません。私はこれをもう一度読む必要がありますが、後世のために働いた更新コードは

var options = { 
      auth: auth, 
      spreadsheetId: spreadsheetId, 
      resource: { 
       requests: [{ 
        repeatCell: { 
         fields: "userEnteredFormat.numberFormat", 
         range: { 
          sheetId: 1564685276, 
          startColumnIndex: 1, // inclusive 
          endColumnIndex: 3, // exclusive 
         }, 
         cell: { 
          userEnteredFormat: { 
           numberFormat: { 
            type: "CURRENCY", 
            pattern: "$#,##0.00" 
           } 
          } 
         } 
        } 
       }], 
      } 
     } 
+0

Ugh ...そして、私が完全にテストしていたセルが通常の数値であることがわかったので、これがまさにこれがうまくいくと確信していません。私の実際のスプレッドシートでは、postgresqlデータベースから結果をインポートするときに、奇妙な先頭アポストロフィが追加されたため、これは機能しませんでした。私はそれらを置き換えるための関数を書いた後、書式を実行し、すべてが大喜びです。 – Martin

+0

@Martin ...スプレッドシートからシートIDを取得する方法 – Priya

+0

@Priya - spreadsheetIdはコード内の他の場所で定義されています。スプレッドシートのURLで見つけることができます。 (長い英数字文字列) – Martin

関連する問題