2016-07-18 6 views
5

मेरे पास एक गूग्लशीट है जहां कॉलम में कोई जानकारी नहीं हो सकती है। पंक्तियों के माध्यम से पुनरावृत्ति करते हुए और उस कॉलम को देखते हुए, यदि कॉलम खाली है, तो यह कुछ भी वापस नहीं कर रहा है। इससे भी बदतर, अगर मैं पूरी पंक्ति प्राप्त करता हूं और इसमें सामान्य शामिल है, तो 5 कॉलम प्राप्त करें, मुझे कॉलम खाली होने पर केवल 4 कॉलम वापस मिलते हैं। यदि मुझे कॉलम की पंक्ति मिल रही है और कॉलम में सेल्स में से एक खाली है तो मैं या तो नल या खाली स्ट्रिंग कैसे लौटा सकता हूं?Googlesheet APIv4 खाली कक्ष प्राप्त कर रहा है

// Build a new authorized API client service. 
Sheets service = GoogleSheets.getSheetsService(); 
range = "Functional Users!A3:E3"; 
response = service.spreadsheets().values().get(spreadsheetId, range).execute(); 
values = response.getValues(); 
cells = values.get(0); 

मुझे पंक्ति में 5 कोशिकाएं मिल रही हैं। cell.size() हमेशा पांच लौटना चाहिए। हालांकि अगर 5 कोशिकाओं में से कोई भी खाली है, तो यह कम कोशिकाओं को वापस कर देगा। कहें कि केवल बी 3 पर सेल खाली है। cell.size() होगा 4. अगला पुनरावृत्ति, मुझे ए 4 मिलता है: ई 4 और सेल डी 4 खाली है। फिर, cell.size() 4 होगा। यह जानने के लिए कि कौन सा सेल गुम है। यदि ए 4 और डी 4 और ई 4 खाली हैं, तो cell.size() 2.

खाली कोशिकाओं के बावजूद 5 कोशिकाओं को वापस करने के लिए मैं इसे कैसे प्राप्त करूं?

उत्तर

3

मैंने शीट्सव 4 में डब किया है और यह वास्तव में व्यवहार है जब आप रिक्त डेटा वाले सेल की एक श्रृंखला पढ़ रहे हैं। ऐसा लगता है कि यह इस तरह से डिजाइन किया गया है। जैसा कि Reading data docs में बताया गया है:

खाली पिछली पंक्तियां और कॉलम छोड़े गए हैं।

तो यदि आप 'खाली मान' का प्रतिनिधित्व करने वाले चरित्र को लिखने का कोई तरीका ढूंढ सकते हैं, तो शून्य होने के बाद, यह ऐसा करने का एक तरीका होगा।

1

जिस तरह से मैंने इस मुद्दे को हल किया वह मूल्यों को पांडस डेटाफ्रेम में परिवर्तित कर रहा था। मैंने अपने Google शीट्स में इच्छित विशेष कॉलम प्राप्त किए, फिर उन मानों को पांडस डेटाफ्रेम में परिवर्तित कर दिया। एक बार जब मैंने अपने डेटासेट को पांडस डेटाफ्रेम में परिवर्तित कर दिया, तो मैंने कुछ डेटा स्वरूपण किया, फिर डेटाफ्रेम को एक सूची में परिवर्तित कर दिया। सूची को पांडस डेटाफ्रेम में परिवर्तित करके, प्रत्येक कॉलम संरक्षित है। पांडस खाली पिछली पंक्तियों और स्तंभों के लिए पहले से ही शून्य मान बनाता है। हालांकि, मुझे निरंतरता रखने के लिए नल मूल्यों वाली गैर पिछली पंक्तियों को भी परिवर्तित करने की आवश्यकता थी।

# Authenticate and create the service for the Google Sheets API 
credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES) 
http = credentials.authorize(Http()) 
discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?version=v4') 
service = discovery.build('sheets', 'v4', 
    http=http,discoveryServiceUrl=discoveryUrl) 

spreadsheetId = 'id of your sheet' 
rangeName = 'range of your dataset' 
result = service.spreadsheets().values().get(
    spreadsheetId=spreadsheetId, range=rangeName).execute() 
values = result.get('values', []) 

#convert values into dataframe 
df = pd.DataFrame(values) 

#replace all non trailing blank values created by Google Sheets API 
#with null values 
df_replace = dataset.replace([''], [None]) 

#convert back to list to insert into Redshift 
processed_dataset = df_replace.values.tolist() 
संबंधित मुद्दे