पिवट टेबल

Google Sheets API से, स्प्रेडशीट में पिवट टेबल बनाई और अपडेट की जा सकती हैं. इस पेज पर दिए गए उदाहरणों में बताया गया है कि Sheets API की मदद से, कुछ सामान्य पिवट टेबल ऑपरेशन कैसे हासिल किए जा सकते हैं.

ये उदाहरण, न्यूट्रल भाषा में एचटीटीपी अनुरोधों के रूप में दिखाए जाते हैं. Google API क्लाइंट लाइब्रेरी का इस्तेमाल करके, बैच अपडेट को अलग-अलग भाषाओं में लागू करने का तरीका जानने के लिए, स्प्रेडशीट अपडेट करें देखें.

इन उदाहरणों में, SPREADSHEET_ID और SHEET_ID प्लेसहोल्डर से पता चलता है कि आपको आईडी कहां देने हैं. स्प्रेडशीट आईडी को स्प्रेडशीट के यूआरएल में देखा जा सकता है. spreadsheets.get तरीके का इस्तेमाल करके, शीट का आईडी पाया जा सकता है. रेंज को A1 नोटेशन का इस्तेमाल करके बताया जाता है. उदाहरण के लिए, Sheet1!A1:D5 रेंज है.

इसके अलावा, प्लेसहोल्डर SOURCE_SHEET_ID आपकी शीट को सोर्स डेटा के साथ दिखाता है. इन उदाहरणों में, यह टेबल पिवट टेबल सोर्स डेटा में दी गई है.

पिवट टेबल का सोर्स डेटा

इन उदाहरणों के लिए, मान लें कि इस्तेमाल की जा रही स्प्रेडशीट की पहली शीट ("Sheet1") में यह सोर्स "sales" डेटा है. पहली पंक्ति में दिए गए स्ट्रिंग, अलग-अलग कॉलम के लेबल होते हैं. अपनी स्प्रेडशीट में अन्य शीट से पढ़ने के तरीके के उदाहरण देखने के लिए, A1 नोटेशन देखें.

जवाब B C D E F G
1 आइटम की कैटगरी मॉडल नंबर कीमत संख्या इलाका सेल्सपर्सन शिपिंग की तारीख
2 व्हील W-24 20.50 डॉलर 4 पश्चिम बेथ 1/3/2016
3 दरवाज़ा D-01X 15.00 डॉलर 2 दक्षिण आमिर 15/3/2016
4 इंजन ENG-0134 INR4500.00 1 उत्तरी कारमेन 20/3/2016
5 Frame FR-0B1 34.00 डॉलर 8 पूर्व हैना 12/3/2016
6 पैनल P-034 INR270 4 उत्तरी डेविन 2/4/2016
7 पैनल P-052 11.50 डॉलर 7 पूर्व एरिक 16/5/2016
8 व्हील W-24 20.50 डॉलर 11 दक्षिण Sheldon 30/4/2016
9 इंजन ENG-0161 330.00 डॉलर 2 उत्तरी जेसी 2/7/2016
10 दरवाज़ा D-01Y 29.00 डॉलर 6 पश्चिम अरमांडो 13/3/2016
11 Frame FR-0B1 34.00 डॉलर 9 दक्षिण युलियाना 27/2/2016
12 पैनल P-102 3.00 डॉलर 15 पश्चिम कारमेन 18/4/2016
13 पैनल P-105 8.25 डॉलर 13 पश्चिम जेसी 20/6/2016
14 इंजन ENG-0211 283.00 डॉलर 1 उत्तरी आमिर 21/6/2016
15 दरवाज़ा D-01X 15.00 डॉलर 2 पश्चिम अरमांडो 3/7/2016
16 Frame FR-0B1 34.00 डॉलर 6 दक्षिण कारमेन 15/7/2016
17 व्हील W-25 20.00 डॉलर 8 दक्षिण हैना 2/5/2016
18 व्हील W-11 29.00 डॉलर 13 पूर्व एरिक 19/5/2016
19 दरवाज़ा D-05 17.70 डॉलर 7 पश्चिम बेथ 28/6/2016
20 Frame FR-0B1 34.00 डॉलर 8 उत्तरी Sheldon 30/3/2016

पिवट टेबल जोड़ना

यहां दिया गया spreadsheets.batchUpdate कोड सैंपल दिखाता है कि UpdateCellsRequest सोर्स डेटा से पिवट टेबल बनाने के लिए कैसे UpdateCellsRequest का इस्तेमाल किया जाता है. साथ ही, इसे SHEET_ID के तय किए गए शीट की शीट के A50 सेल में ऐंकर किया जाता है.

अनुरोध पिवट टेबल को इन प्रॉपर्टी के साथ कॉन्फ़िगर करता है:

  • एक वैल्यू ग्रुप (संख्या) जो बिक्री की संख्या दिखाता है. वैल्यू का सिर्फ़ एक ग्रुप होता है, इसलिए दो संभावित valueLayout सेटिंग एक जैसी होती हैं.
  • दो लाइन ग्रुप (आइटम की कैटगरी और मॉडल नंबर). पहला क्रम, "वेस्ट" क्षेत्र से कुल संख्या की बढ़ती हुई वैल्यू के तौर पर क्रम से लगाया जाता है. इसलिए, "इंजन" (पश्चिमी बिक्री के बिना) "दरवाज़े" (15 पश्चिम बिक्री के साथ) के ऊपर दिखाई देता है. मॉडल नंबर ग्रुप सभी क्षेत्रों में होने वाली कुल बिक्री को घटते हुए क्रम में क्रम से लगाता है. इसलिए, "W-24" (15 बिक्री) "W-25" (8 बिक्री) के ऊपर दिखता है. ऐसा करने के लिए, valueBucket फ़ील्ड को {} पर सेट करें.
  • एक कॉलम ग्रुप (क्षेत्र) जो ज़्यादातर बिक्री के बढ़ते क्रम में दिखता है. फिर से, valueBucket को {} पर सेट किया गया. "उत्तर" में सबसे कम बिक्री होती है और इसलिए, यह पहले क्षेत्र कॉलम के तौर पर दिखता है.

अनुरोध का प्रोटोकॉल नीचे दिखाया गया है.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateCells": {
          "rows": [
              {
            "values": [
              {
                "pivotTable": {
                  "source": {
                    "sheetId": SOURCE_SHEET_ID,
                    "startRowIndex": 0,
                    "startColumnIndex": 0,
                    "endRowIndex": 20,
                    "endColumnIndex": 7
                  },
                  "rows": [
                    {
                      "sourceColumnOffset": 0,
                      "showTotals": true,
                      "sortOrder": "ASCENDING",
                      "valueBucket": {
                        "buckets": [
                          {
                            "stringValue": "West"
                          }
                        ]
                      }
                    },
                    {
                      "sourceColumnOffset": 1,
                      "showTotals": true,
                      "sortOrder": "DESCENDING",
                      "valueBucket": {}
                    }
                  ],
                  "columns": [
                    {
                      "sourceColumnOffset": 4,
                      "sortOrder": "ASCENDING",
                      "showTotals": true,
                      "valueBucket": {}
                    }
                  ],
                  "values": [
                    {
                      "summarizeFunction": "SUM",
                      "sourceColumnOffset": 3
                    }
                  ],
                  "valueLayout": "HORIZONTAL"
                }
              }
            ]
          }
        ],
        "start": {
          "sheetId": SHEET_ID,
          "rowIndex": 49,
          "columnIndex": 0
        },
        "fields": "pivotTable"
      }
    }
  ]
}

अनुरोध इस तरह की पिवट टेबल बनाता है:

पिवट टेबल में रेसिपी का नतीजा जोड़ें

कैलकुलेट की गई वैल्यू के साथ पिवट टेबल जोड़ना

यहां दिया गया spreadsheets.batchUpdate कोड सैंपल बताता है कि UpdateCellsRequest सोर्स डेटा से कैलकुलेशन वैल्यू ग्रुप वाली पिवट टेबल कैसे बनाई जाए. साथ ही, इसे SHEET_ID के तय किए गए शीट के A50 सेल में ऐंकर किया जाता है.

अनुरोध पिवट टेबल को इन प्रॉपर्टी के साथ कॉन्फ़िगर करता है:

  • दो वैल्यू ग्रुप (संख्या और कुल कीमत). पहला पता, बिक्री की संख्या बताता है. दूसरा, किसी पार्ट की लागत के गुणनफल और उसकी बिक्री की कुल संख्या के आधार पर, कैलकुलेट की गई वैल्यू है. ऐसा करने के लिए, इस फ़ॉर्मूला का इस्तेमाल करें: =Cost*SUM(Quantity).
  • तीन लाइन ग्रुप (आइटम की कैटगरी, मॉडल नंबर, और कीमत).
  • एक कॉलम ग्रुप (क्षेत्र).
  • हर ग्रुप में, लाइन और कॉलम ग्रुप को संख्या के बजाय नाम के हिसाब से क्रम में लगाया जाता है. इन ग्रुप की मदद से, टेबल को वर्णमाला के क्रम में लगाया जाता है. ऐसा करने के लिए, valueBucket फ़ील्ड को PivotGroup से हटा दिया जाता है.
  • टेबल के दिखने के तरीके को आसान बनाने के लिए, अनुरोध में मुख्य पंक्ति और कॉलम ग्रुप को छोड़कर सभी के लिए सबटोटल छिपा दिए जाते हैं.
  • टेबल में प्रॉडक्ट दिखने के तरीके को बेहतर बनाने के लिए, अनुरोध valueLayout को VERTICAL पर सेट कर देता है. valueLayout सिर्फ़ तब ज़रूरी है, जब वैल्यू ग्रुप दो या उससे ज़्यादा हों.

अनुरोध का प्रोटोकॉल नीचे दिखाया गया है.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateCells": {
        "rows": [
              {
            "values": [
              {
                "pivotTable": {
                  "source": {
                    "sheetId": SOURCE_SHEET_ID,
                    "startRowIndex": 0,
                    "startColumnIndex": 0,
                    "endRowIndex": 20,
                    "endColumnIndex": 7
                  },
                  "rows": [
                    {
                      "sourceColumnOffset": 0,
                      "showTotals": true,
                      "sortOrder": "ASCENDING"
                    },
                    {
                      "sourceColumnOffset": 1,
                      "showTotals": false,
                      "sortOrder": "ASCENDING",
                    },
                    {
                      "sourceColumnOffset": 2,
                      "showTotals": false,
                      "sortOrder": "ASCENDING",
                    }
                  ],
                  "columns": [
                    {
                      "sourceColumnOffset": 4,
                      "sortOrder": "ASCENDING",
                      "showTotals": true
                    }
                  ],
                  "values": [
                    {
                      "summarizeFunction": "SUM",
                      "sourceColumnOffset": 3
                    },
                    {
                      "summarizeFunction": "CUSTOM",
                      "name": "Total Price",
                      "formula": "=Cost*SUM(Quantity)"
                    }
                  ],
                  "valueLayout": "VERTICAL"
                }
              }
            ]
          }
        ],
        "start": {
          "sheetId": SHEET_ID,
          "rowIndex": 49,
          "columnIndex": 0
        },
        "fields": "pivotTable"
      }
    }
  ]
}

अनुरोध इस तरह की पिवट टेबल बनाता है:

पिवट वैल्यू के ग्रुप की रेसिपी का नतीजा जोड़ें

पिवट टेबल मिटाना

यहां spreadsheets.batchUpdate कोड सैंपल दिया गया है कि UpdateCellsRequest किसी ऐसी पिवट टेबल (अगर मौजूद है) को मिटाने के लिए कैसे इस्तेमाल किया जाता है जिसे शीट के सेल A50 पर ऐंकर किया गया है और जो SHEET_ID से तय होती है.

UpdateCellsRequest, fields पैरामीटर में "pivotTable" को शामिल करके पिवट टेबल को हटा सकता है और ऐंकर सेल पर pivotTable फ़ील्ड को हटाकर भी पिवट टेबल हटा सकता है.

अनुरोध का प्रोटोकॉल नीचे दिखाया गया है.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateCells": {
          "rows": [ 
            {
            "values": [
              {}
            ]
          }
        ],
        "start": {
          "sheetId": SHEET_ID,
          "rowIndex": 49,
          "columnIndex": 0
        },
        "fields": "pivotTable"
      }
    }
  ]
}

पिवट टेबल के कॉलम और पंक्तियों में बदलाव करना

यहां दिया गया spreadsheets.batchUpdate कोड सैंपल में बताया गया है कि UpdateCellsRequest पिवट टेबल जोड़ें में बनाई गई पिवट टेबल में बदलाव करने के लिए, उसे कैसे इस्तेमाल किया जाता है.

CellData संसाधन में pivotTable फ़ील्ड के सबसेट को fields पैरामीटर के साथ अलग-अलग नहीं बदला जा सकता. बदलाव करने के लिए, पूरा pivotTable फ़ील्ड देना ज़रूरी है. पिवट टेबल में बदलाव करने के लिए, उसे नई टेबल से बदलना ज़रूरी है.

अनुरोध करने पर, मूल पिवट टेबल में ये बदलाव किए जाते हैं:

  • मूल पिवट टेबल (मॉडल नंबर) से दूसरे पंक्ति ग्रुप को हटाता है.
  • कॉलम ग्रुप (सेलर) जोड़ता है. कॉलम, पैनल में हुई बिक्री की कुल संख्या के हिसाब से घटते क्रम में लगाए जाते हैं. "Carmen" (15 पैनल सेल्स), "जेसी" (13 पैनल सेल्स) की बाईं ओर दिखता है.
  • "पश्चिम" को छोड़कर, हर क्षेत्र के लिए कॉलम को छोटा करता है. ऐसा करने से, उस क्षेत्र के सेलर ग्रुप को छिप जाता है. ऐसा करने के लिए, क्षेत्र कॉलम ग्रुप के उस कॉलम के लिए valueMetadata में collapsed को true पर सेट करें.

अनुरोध का प्रोटोकॉल नीचे दिखाया गया है.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateCells": {
        "rows": [
            {
          "values": [
              {
                "pivotTable": {
                  "source": {
                    "sheetId": SOURCE_SHEET_ID,
                    "startRowIndex": 0,
                    "startColumnIndex": 0,
                    "endRowIndex": 20,
                    "endColumnIndex": 7
                  },
                  "rows": [
                    {
                      "sourceColumnOffset": 0,
                      "showTotals": true,
                      "sortOrder": "ASCENDING",
                      "valueBucket": {
                        "buckets": [
                          {
                            "stringValue": "West"
                          }
                        ]
                      }
                    }
                  ],
                  "columns": [
                    {
                      "sourceColumnOffset": 4,
                      "sortOrder": "ASCENDING",
                      "showTotals": true,
                      "valueBucket": {},
                      "valueMetadata": [
                        {
                          "value": {
                            "stringValue": "North"
                          },
                          "collapsed": true
                        },
                        {
                          "value": {
                            "stringValue": "South"
                          },
                          "collapsed": true
                        },
                        {
                          "value": {
                            "stringValue": "East"
                          },
                          "collapsed": true
                        }
                      ]
                    },
                    {
                      "sourceColumnOffset": 5,
                      "sortOrder": "DESCENDING",
                      "showTotals": false,
                      "valueBucket": {
                        "buckets": [
                          {
                            "stringValue": "Panel"
                          }
                        ]
                      },
                    }
                  ],
                  "values": [
                    {
                      "summarizeFunction": "SUM",
                      "sourceColumnOffset": 3
                    }
                  ],
                  "valueLayout": "HORIZONTAL"
                }
              }
            ]
          }
        ],
        "start": {
          "sheetId": SHEET_ID,
          "rowIndex": 49,
          "columnIndex": 0
        },
        "fields": "pivotTable"
      }
    }
  ]
}

अनुरोध इस तरह की पिवट टेबल बनाता है:

पिवट टेबल में रेसिपी के नतीजे में बदलाव करें

पिवट टेबल का डेटा पढ़ें

नीचे दिया गया spreadsheets.get कोड सैंपल बताता है कि स्प्रेडशीट से पिवट टेबल का डेटा कैसे पाया जा सकता है. fields क्वेरी पैरामीटर से यह तय होता है कि सिर्फ़ पिवट टेबल का डेटा दिखाया जाना चाहिए (सेल की वैल्यू वाले डेटा के उलट).

अनुरोध का प्रोटोकॉल नीचे दिखाया गया है.

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets(properties.sheetId,data.rowData.values.pivotTable)

इस रिस्पॉन्स में एक Spreadsheet संसाधन होता है, जिसमें SheetProperties एलिमेंट वाला एक Sheet ऑब्जेक्ट होता है. GridData एलिमेंट की एक कैटगरी भी होती है, जिसमें PivotTable के बारे में जानकारी होती है. पिवट टेबल की जानकारी, शीट के CellData रिसॉर्स में उस सेल के लिए होती है जिस पर टेबल ऐंकर की गई है (यानी, टेबल का ऊपरी बाएं कोने में). अगर रिस्पॉन्स फ़ील्ड, डिफ़ॉल्ट वैल्यू पर सेट है, तो उसे रिस्पॉन्स से हटा दिया जाता है.

इस उदाहरण में, पहली शीट (SOURCE_SHEET_ID) में रॉ टेबल का सोर्स डेटा है, जबकि दूसरी शीट (SHEET_ID) में पिवट टेबल है, जो B3 पर ऐंकर की गई है. खाली कर्ली ब्रेसेस उन शीट या सेल को दिखाते हैं जिनमें पिवट टेबल डेटा नहीं होता. रेफ़रंस के लिए, यह अनुरोध शीट के आईडी भी दिखाता है.

{
  "sheets": [
    {
      "data": [{}],
      "properties": {
        "sheetId": SOURCE_SHEET_ID
      }
    },
    {
      "data": [
        {
          "rowData": [
            {},
            {},
            {
              "values": [
                {},
                {
                  "pivotTable": {
                    "columns": [
                      {
                        "showTotals": true,
                        "sortOrder": "ASCENDING",
                        "sourceColumnOffset": 4,
                        "valueBucket": {}
                      }
                    ],
                    "rows": [
                      {
                        "showTotals": true,
                        "sortOrder": "ASCENDING",
                        "valueBucket": {
                          "buckets": [
                            {
                              "stringValue": "West"
                            }
                          ]
                        }
                      },
                      {
                        "showTotals": true,
                        "sortOrder": "DESCENDING",
                        "valueBucket": {},
                        "sourceColumnOffset": 1
                      }
                    ],
                    "source": {
                      "sheetId": SOURCE_SHEET_ID,
                      "startColumnIndex": 0,
                      "endColumnIndex": 7,
                      "startRowIndex": 0,
                      "endRowIndex": 20
                    },
                    "values": [
                      {
                        "sourceColumnOffset": 3,
                        "summarizeFunction": "SUM"
                      }
                    ]
                  }
                }
              ]
            }
          ]
        }
      ],
      "properties": {
        "sheetId": SHEET_ID
      }
    }
  ],
}