10

पर मैं एक अन्य स्प्रेडशीट में एक हाइपरलिंक से Google स्प्रेडशीट की एक विशिष्ट शीट खोलना चाहता हूं।Google स्प्रेडशीट हाइपरलिंक एक विशिष्ट शीट

मेरे मास्टर स्प्रेडशीट में मेरे पास अलग-अलग लिंक हैं, और प्रत्येक के पास एक ही दास स्प्रेडशीट के लिए एक हाइपरलिंक होना चाहिए लेकिन विभिन्न शीट पर होना चाहिए।

मुझे हाइपरलिंक फ़ंक्शन पता है लेकिन यह एक विशिष्ट शीट से नहीं करता है।

मदद के लिए धन्यवाद

उत्तर

9

HYPERLINK समारोह कर सकते हैं एक ही कार्यपुस्तिका में एक पत्तर लिंक; यदि आप स्प्रेडशीट के यूआरएल को देखते हैं, तो इसके अंत में #gid=x है जहां x प्रत्येक शीट के लिए अद्वितीय है।

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

+4

अविश्वसनीय यह एक मानक विशेषता नहीं है। वर्कअराउंड के लिए धन्यवाद – Brandon

+1

मुझे यह उत्तर उपयोगी पाया .. बस एक टिप्पणी जोड़ना: "एक और [ब्राउज़र] टैब में खुलता है" वास्तव में केवल एक समस्या है यदि आप उसी वर्कशीट को उसी स्प्रेडशीट दस्तावेज़ से जोड़ रहे हैं। यदि आपका उदाहरण मेरी तरह है, तो आप एक HTML या विकी पेज को एक विशिष्ट वर्कशीट से जोड़ रहे हैं, फिर कोई चिंता नहीं .... #gid चाल काम करती है (लंबे समय तक कोई भी वर्कशीट टैब को हटा देता है ... नोट करना बहुत महत्वपूर्ण है कि #gid एक निश्चित स्थिति संख्या है, इसलिए बाईं ओर से चौथी वर्कशीट # गीड = 3 होगी)। –

11

आप इस कस्टम स्क्रिप्ट (टूल्स> स्क्रिप्ट संपादक) फ़ंक्शन का उपयोग कर सकते हैं और इसे उदा। कस्टम ड्राइंग (सम्मिलित करें> ड्राइंग ...> सहेजें और बंद करें, फिर राइट नई ड्राइंग पर क्लिक करें> असाइन स्क्रिप्ट ...> "goToSheet2")

function goToSheet2() { 
    goToSheet("Sheet2"); 
} 

function goToSheet(sheetName) { 
    var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName); 
    SpreadsheetApp.setActiveSheet(sheet); 
} 

अद्यतन:
नवीनतम संस्करण में आप कर सकते हैं सेल का चयन करें और लिंक (सम्मिलित करें> लिंक) जोड़ सकते हैं और सीधे विशिष्ट शीट के लिए लिंक का चयन करें:
Insert link to sheet.

+0

यहां दिए गए सर्वश्रेष्ठ उत्तर और विकल्प, ** अपडेट: ** एक। –

0

तो क्या मैं ओपी से समझते हैं कि आप एक मास्टर स्प्रेडशीट है कि आप अलग-अलग शीट के लिंक करना चाहते हैं कि है, जहां उनमें से एक या अधिक शीट एकल या गुणक में हो सकती है ई स्प्रेडशीट फाइलें।

HYPERLINK फ़ंक्शन केवल एक यूआरएल को हाइपरलिंक में बदल देता है और वास्तव में केवल तब उपयोगी होता है जब आप केवल एक लिंक के बजाय हाइपरटेक्स्ट करना चाहते हैं। यदि आप कच्चे यूआरएल को डेटा के रूप में दर्ज करते हैं, तो यह स्वचालित रूप से हाइपरलिंक में बदल जाता है, इसलिए कोई अतिरिक्त काम नहीं होता है।

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

नीचे छद्म कोड (पायथन) के कुछ स्निपेट हैं जो आपको प्रारंभ करने में मदद कर सकते हैं। मैं सभी बॉयलरप्लेट ऑथ कोड छोड़ रहा हूं, लेकिन अगर आपको इसकी ज़रूरत है, तो this blog post और this video देखें। नीचे दिया गया कोड मानता है कि आपकी एपीआई सेवा एंडपॉइंट SHEETS है।

यह अपने चादरों से प्रत्येक के लिए लिंक के निर्माण के लिए एक लक्ष्य स्प्रेडशीट पढ़ता है:

# open target Sheet, get all sheets & Sheet URL 
SHEET_ID = TARGET_SHEET_DRIVE_FILE_ID 
res = SHEETS.spreadsheets().get(spreadsheetId=SHEET_ID, 
     fields='sheets,spreadsheetUrl').execute() 
sheets = res.get('sheets', []) 
url = res['spreadsheetUrl'] 

# for each sheet, dump out its name & full URL 
for sheet in sheets: 
    data = sheet['properties'] 
    print('** Sheet title: %r' % data['title']) 
    print(' - Link: %s#gid=%s' % (url, data['sheetId'])) 
स्क्रीन पर मुद्रण के बजाय

, मान लीजिए कि आप अपने ऐप्लिकेशन में (name, URL) 2-टपल सरणी में उन्हें संग्रहीत करते हैं, तो नीचे

sheet_data = [ 
    ('Intro', 'https://docs.google.com/spreadsheets/d/SHEET_ID/edit#gid=5'), 
    ('XData', 'https://docs.google.com/spreadsheets/d/SHEET_ID/edit#gid=3'), 
    ('YData', 'https://docs.google.com/spreadsheets/d/SHEET_ID/edit#gid=7') 
] 

फिर आप उन्हें गुरु को लिख सकते हैं इस तरह (ऊपरी-बाएं कोने, सेल A1 से शुरू): लाइन, यह इस सूची की तरह कुछ sheet_data बुलाया लग रहा है

+०१२३५१६४१०६
SHEET_ID = MASTER_SHEET_DRIVE_FILE_ID 
SHEETS.spreadsheets().values().update(
    spreadsheetId=SHEET_ID, range='A1', 
    body={'values': sheet_data}, 
    valueInputOption='USER_ENTERED' 
).execute() 

कुछ चेतावनियां जब gid का उपयोग कर:

  • पहले डिफ़ॉल्ट के लिए आप (पत्रक 1) बनाया चादर हमेशा एक gid=0 है।
  • उसके बाद जो भी चादरें आप जोड़ते हैं, उनके पास यादृच्छिक gid होगा।
  • अपनी स्प्रेडशीट्स में पहली शीट के लिए gid=0 पर बैंक न करें, हालांकि आप या किसी अन्य व्यक्ति ने मूल उदाहरण पत्र को हटा दिया हो, जैसा कि उपरोक्त मेरे उदाहरण की तरह है।

    आप शीट्स एपीआई का उपयोग कर के और अधिक उदाहरण देखने के लिए चाहते हैं, यहाँ और अधिक वीडियो मैं बनाया है (पोस्ट के साथ ही है कि प्रत्येक कोड नमूना में तल्लीन) कर रहे हैं post

  • Formatting text using the Sheets API प्लस कोड गहरा गोता post
  • Generating slides from spreadsheet data प्लस कोड गहरा गोता post

फिर जब आप शीट्स यूआई में मास्टर खोलते हैं, तो आप किसी भी व्यक्तिगत शीट पर क्लिक कर सकते हैं, भले ही वे किस स्प्रेडशीट फाइलों में हों। यदि आप उन्हें किसी अन्य ऐप या स्क्रिप्ट द्वारा स्वचालित रूप से खोला चाहते हैं, तो अधिकांश प्रोग्रामिंग भाषाएं डेवलपर्स को लक्षित यूआरएल दिए गए वेब ब्राउजर को लॉन्च करने के तरीकों की पेशकश करें। अजगर में, यह webbrowser मॉड्यूल (docs) होगा:

import webbrowser 
webbrowser.open_new(url) # or webbrowser.open_new_tab(url) 
0

मैं personnaly यह है कि क्या @rejthy के आधार पर किया था ने कहा: लिपियों में मैं इस समारोह बनाया:

/** 
* Return the id of the sheet. (by name) 
* 
* @return The ID of the sheet 
* @customfunction 
*/ 
function GET_SHEET_ID(sheetName) { 
    var sheetId = SpreadsheetApp.getActive().getSheetByName(sheetName).getSheetId(); 
    return sheetId; 
} 

और उसके बाद में मेरी शीट जहां मुझे लिंक की आवश्यकता है मैंने यह किया: =HYPERLINK("#gid="&GET_SHEET_ID("Factures - "&$B$1);"Année en cours")

0

वैकल्पिक रूप से, आप एक कस्टम फ़ंक्शन बनाने का प्रयास कर सकते हैं। स्प्रेडशीट खोल कर, उपकरण मेनू, फिर स्क्रिप्ट संपादक क्लिक करें .... संपादक में कोड पेस्ट करें:,

/** 
* Gets the Sheet ID from Sheet Name 
* 
* @param {string} input The Sheet Name 
* @return The Sheet ID 
* @customfunction 
*/ 
function SHEETID(input) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var tab = ss.getSheetByName(input); 
    return tab.getSheetId(); 
} 

सहेजें स्प्रेडशीट ताज़ा करते हैं, और उसके बाद अपने कस्टम समारोह में टाइप

=SHEETID("Your Custom Sheet Name") 

=SHEETID(A1) 

और voila!टैब के लिए अद्वितीय आईडी (वर्तमान स्प्रेडशीट में) आउटपुट है। आप निम्न सूत्र का उपयोग करके इसे हाइपरलिंक कर सकते हैं:

=HYPERLINK("#gid="&SHEETID(A1),"Link") 
संबंधित मुद्दे