Google शीट में एक स्क्रिप्ट ट्रिगर जोड़ें जो एंड्रॉइड मोबाइल ऐप में काम करेगा


13

मेरे पास एक Google शीट है जिसमें एक स्क्रिप्ट शामिल है जिसे एक बटन पर क्लिक करते समय चलाया जाना चाहिए। ऐसा करने के लिए अनुशंसित तरीका (जहां तक ​​मैं बता सकता हूं) एक छवि सम्मिलित करना है और फिर प्रश्न में छवि के लिए एक स्क्रिप्ट संलग्न करना है।

जब तक मैं अपने डेस्कटॉप पर शीट खोलता हूं, यह ठीक काम करता है। हालाँकि, अगर मैं एंड्रॉइड Google शीट ऐप में शीट खोलता हूं, तो छवि बस दिखाई नहीं देती है। जहां तक ​​मैं यह बता सकता हूं (कमी) व्यवहार कहीं भी प्रलेखित नहीं है, लेकिन मैंने एक ही मुद्दे वाले कई लोगों को पाया है।

मैं सोच रहा था कि मैं इस समस्या को कैसे दरकिनार करूँ। क्या मुझे कुछ स्पष्ट याद आया जो मेरी छवियों को एंड्रॉइड ऐप में दिखाई देगा? या फिर एक स्क्रिप्ट ट्रिगर को शीट पर जोड़ने का एक और सरल तरीका है जो मोबाइल पर काम करेगा?


2
यह वास्तव में Android के लिए देशी शीट्स ऐप के साथ एक मुद्दा है, है ना? आपका सवाल शायद Android उत्साही पर बेहतर है ।
ऐले

1
@AlE। यह देखने का एक तरीका है, लेकिन इस मुद्दे को दूर करने के लिए Google शीट के ज्ञान की आवश्यकता है, न कि Android के ज्ञान की।

@ असामान्य: यही कारण है कि मैंने सवाल पूछा (और बंद करने के लिए वोट नहीं दिया)। मैं सिर्फ एस्कर को जवाब पाने के लिए आवश्यक विशेषज्ञ (ise) को आकर्षित करने में मदद करने की कोशिश कर रहा हूं।
एले

जवाबों:


26

ऐसा लगता है कि वर्तमान में शीट्स एंड्रॉइड ऐप में न तो चित्र और न ही कस्टम मेनू आइटम काम करते हैं। मैं स्प्रेडशीट के भीतर एक "फ़ंक्शन मेनू" बनाने का सुझाव देता हूं। उदाहरण के लिए:

  1. सेल A1 का कहना है "एक फ़ंक्शन का चयन करें"
  2. सेल बी 1 में एक डेटा सत्यापन नियम है जो सामग्री को आपके द्वारा किए गए कार्यों के नाम तक सीमित करता है। मेरे उदाहरण में, वे "इन्सर्टसोमेटिंग" और "कन्वर्टसमोमेटिंग" हैं। (डेटा सत्यापन संवाद में "शो सहायता" की जांच न करें, "सहायता" पॉपअप मोबाइल पर गुस्सा है।)
  3. एक स्क्रिप्ट फ़ंक्शन onEdit(सरल ट्रिगर), प्रत्येक संपादन पर चल रहा है, यह जांचता है कि क्या बी 1 की सामग्री बदल गई है। यदि हां, तो यह उपयुक्त कार्य करता है।

यहाँ मेरा कोड प्रदर्शन उद्देश्य के लिए शामिल दो कार्यों के साथ है:

function onEdit(e) {
  if (e.range.getA1Notation() == 'B1') {
    if (/^\w+$/.test(e.value)) {        
      this[e.value]();
      e.range.clear();
    }
  }
}

function insertSomething() { 
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(2,3).setValue('inserted something');
}  

function convertSomething() { 
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(3,3).setValue('converted something');
}  

शर्त /^\w+$/.test(e.value)सिर्फ यह है कि हमारे पास एक नॉनमिप्ट स्ट्रिंग है और यह दुर्भावनापूर्ण कोड निष्पादित नहीं कर रहा है कि किसी को सेल बी 1 में रखा जाए। फ़ंक्शन के साथ संलग्न होने के बाद this[e.value]();( thisवैश्विक ऑब्जेक्ट को संदर्भित करता है और फ़ंक्शन नाम शामिल होता है) B1 की सामग्री को साफ़ कर दिया जाता है। एक ही फ़ंक्शन को फिर से चलाने के लिए चुन सकते हैं, या एक और एक।

अवधारणा के प्रमाण के रूप में, यहाँ एप्लिकेशन से स्क्रीनशॉट हैं। स्क्रीनशॉट 1: एक फ़ंक्शन का चयन करें

चुनें

स्क्रीनशॉट 2: फ़ंक्शन चलने के बाद

उपरांत

संदर्भ


1
यह तब तक काम करता है जब तक कि फ़ंक्शन को ईमेल भेजने के लिए उपयोग नहीं किया जाता है। ईमेल को श्रोता द्वारा संपादित नहीं किया जा सकता है, इसलिए बटन / कस्टम मेनू समस्या वास्तव में सीमित है।
10klines

2
@ 10klines उस स्थिति में, सरल onEditट्रिगर को इंस्टॉल करने योग्य में बदल दें , जो ट्रिगर स्थापित करने वाले उपयोगकर्ता के प्राधिकरण के साथ चलता है।

यदि आप चाहते हैं कि आप चित्रों या डेटा सत्यापन के बजाय फ़ंक्शन को ट्रिगर करने के लिए चेकबॉक्स का उपयोग कर सकते हैं। मेरे टेबलेट के साथ eval फ़ंक्शन काम नहीं करता था, इसलिए मैंने प्रत्येक फ़ंक्शन के लिए चेकबॉक्स का एक गुच्छा सेट किया। मैंने तदनुसार कोड समायोजित किया और ठीक काम करता है। संकेत: यदि आपके पास टैबलेट है तो संदेश बॉक्स का उपयोग न करें - किसी कारण से काम नहीं करता है।
टोबियास सार्वन

यह अच्छा समाधान है, हालांकि यह काम नहीं कर रहा है यदि फ़ंक्शन को एपीआई में कॉल करने के लिए कहा जाता है और इससे प्रतिक्रिया प्राप्त होती है क्योंकि यह Google अनुमोदन से पूछ रहा है। चारों ओर कोई काम?
जेबी

1
@JB इंस्टाल एडिट ट्रिगर का उपयोग करें
TheMaster
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.