जब कोई Google पत्रक में चार्ट बनाता है, तो संवाद के माध्यम से एक 3D पाई चार्ट डोनट होल के साथ बना सकता है। यदि आप चार्ट सेवा के साथ ऐसा करने का प्रयास करते हैं तो यह काम नहीं करता है और दस्तावेज़ीकरण उस स्कोर पर काफी सीधा है:
आप पाईहोल और is3D विकल्पों को संयोजित नहीं कर सकते; यदि आप ऐसा करते हैं, तो पाईहोल को नजरअंदाज कर दिया जाएगा।
अब निम्नलिखित कोड का उपयोग कर रहे हैं
function myOTherFunction() {
const sheets = Sheets.Spreadsheets.get(INSERT_YOUR_DOCUMENT_ID_HERE).sheets;
for (let sheet of sheets) {
const charts = sheet.charts;
if (charts)
for (let chart of charts) {
Logger.log("Sheet %s, Chart %s, JSON '%s'", sheet.properties.title, String(chart.chartId), JSON.stringify(chart.spec));
}
}
}
चार्ट में से एक के लिए मुझे निम्नलिखित JSON मिलता है:
{
"hiddenDimensionStrategy": "SKIP_HIDDEN_ROWS_AND_COLUMNS",
"pieChart": {
"domain": {
"sourceRange": {
"sources": [{
"endRowIndex": 21,
"sheetId": 1962284759,
"startRowIndex": 11,
"startColumnIndex": 12,
"endColumnIndex": 13
}
]
}
},
"threeDimensional": true,
"pieHole": 0.5,
"series": {
"sourceRange": {
"sources": [{
"startRowIndex": 11,
"endRowIndex": 21,
"startColumnIndex": 11,
"endColumnIndex": 12,
"sheetId": 1962284759
}
]
}
}
},
"subtitleTextFormat": {
"foregroundColorStyle": {
"rgbColor": {
"red": 0.4,
"green": 0.4,
"blue": 0.4
}
},
"fontSize": 30,
"foregroundColor": {
"red": 0.4,
"blue": 0.4,
"green": 0.4
},
"fontFamily": "serif"
},
"fontName": "serif",
"subtitle": "No Name"
}
दिलचस्प बात यह है कि pieChart
में एक सेटिंग "threeDimensional": true
है, जिसकी मुझे उम्मीद है, is3D
सेटिंग के अनुरूप है, जिसका उपयोग उपरोक्त दस्तावेज़ों के अनुसार नहीं किया जा सकता है। तो यह कहां चला जाता है? निम्नलिखित काम नहीं करता
var chart = Charts.newPieChart()
.setDataTable(data)
.setOption('subtitle', 'Attractions Sw')
.setOption('subtitleTextStyle.fontSize', 30)
.setOption('pieSliceTextStyle.fontSize', 12)
.setOption('pieSliceTextStyle.bold', true)
.setOption('sliceVisibilityThreshold', 0)
.setOption('pieHole', 0.3)
.setOption('legend.position', 'labeled')
.setOption('pieSliceText', 'label')
.setOption('pieChart.threeDimensional', true)
.setDimensions(595, 300)
.build();
तो वहाँ है जहाँ मैंने एक ईंट की दीवार से टकराया। is3D
है और pieChart.threeDimensional
है और मुझे अभी भी प्रोग्राम के रूप में बनाया गया 3D पाई ग्राफ़ डोनट होल के साथ नहीं मिल रहा है! क्या उपाय?
1 उत्तर
मुझे विश्वास है कि आपका लक्ष्य इस प्रकार है।
- आप Google Apps Script का उपयोग करके 3D पाई चार्ट बनाना चाहते हैं।
समस्या और समाधान:
दुर्भाग्य से, वर्तमान चरण में, ऐसा लगता है कि इसे स्प्रेडशीट ऐप का उपयोग करके स्प्रेडशीट सेवा के साथ हासिल नहीं किया जा सकता है। Google Apps स्क्रिप्ट का उपयोग करके 3D चार्ट बनाने के लिए, पत्रक API का उपयोग करना आवश्यक है।
इस उत्तर में, मैं शीट्स एपीआई को वर्कअराउंड के रूप में उपयोग करने का प्रस्ताव देना चाहूंगा। सौभाग्य से, मुझे लगता है कि आपके प्रश्न में आपके JSON ऑब्जेक्ट का उपयोग 3D पाई चार्ट बनाने के लिए किया जा सकता है।
नमूना स्क्रिप्ट:
इस स्क्रिप्ट का उपयोग करने से पहले, कृपया उन्नत Google सेवाओं पर पत्रक API सक्षम करें ए>। और, कृपया अपनी स्थिति के लिए शीट का नाम सेट करें। इस स्क्रिप्ट में, मैंने position
की संपत्ति जोड़कर आपके प्रश्न में आपके JSON ऑब्जेक्ट का उपयोग किया है।
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheetId = ss.getSheetByName("Sheet1").getSheetId();
const resource = {
"requests": [
{
"addChart": {
"chart": {
"spec": {
"hiddenDimensionStrategy": "SKIP_HIDDEN_ROWS_AND_COLUMNS",
"pieChart": {
"domain": {
"sourceRange": {
"sources": [
{
"endRowIndex": 5,
"sheetId": sheetId,
"startRowIndex": 0,
"startColumnIndex": 0,
"endColumnIndex": 1
}
]
}
},
"threeDimensional": true,
"pieHole": 0.5,
"series": {
"sourceRange": {
"sources": [
{
"startRowIndex": 0,
"endRowIndex": 5,
"startColumnIndex": 1,
"endColumnIndex": 2,
"sheetId": sheetId
}
]
}
}
},
"subtitleTextFormat": {
"foregroundColorStyle": {
"rgbColor": {
"red": 0.4,
"green": 0.4,
"blue": 0.4
}
},
"fontSize": 30,
"foregroundColor": {
"red": 0.4,
"blue": 0.4,
"green": 0.4
},
"fontFamily": "serif"
},
"fontName": "serif",
"subtitle": "No Name"
},
"position": { // <--- Added
"overlayPosition": {
"anchorCell": {
"sheetId": 0,
"rowIndex": 0,
"columnIndex": 3
}
}
}
}
}
}
]
};
Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
}
नतीजा:
जब उपरोक्त स्क्रिप्ट चलाई जाती है, तो निम्न परिणाम प्राप्त होता है। इस मामले में, डेटा को कक्षों A1:B5
से पुनर्प्राप्त किया जाता है। यह नमूना मान https://developers के हैं .google.com/chart/interactive/docs/gallery/piechart#making-a-donut-chart।