Google Sheet'e Android mobil uygulamasında çalışacak bir komut dosyası tetikleyicisi ekleyin


13

Bir düğmeyi tıklattığınızda çalıştırılması gereken bir komut dosyası içeren bir Google sayfam var. Bunu yapmanın önerilen yolu (anlayabildiğim kadarıyla) bir görüntü eklemek ve daha sonra söz konusu görüntüye bir komut dosyası eklemektir.

Sayfayı masaüstümde açtığım sürece bu iyi çalışıyor. Ancak, sayfayı Android Google sayfa uygulamasında açarsam görüntü görünmez. Bildiğim kadarıyla bu (eksikliği) davranış hiçbir yerde belgelenmemiştir, ancak aynı sorunu olan birkaç kişi buldum.

Bu sorunu nasıl atlattığımı merak ediyordum. Görüntülerimi Android uygulamasında görünür kılacak belirgin bir şeyi mi kaçırdım? Veya mobil cihazlarda çalışacak bir sayfaya komut dosyası tetikleyici eklemenin başka bir basit yolu var mı?


2
Bu gerçekten Android için yerel E-Tablolar uygulamasıyla ilgili bir sorun, değil mi? Android Meraklılarında sorunuz muhtemelen daha iyi .
ale

1
@AlE. Bu, bakmanın bir yoludur, ancak sorunun üstesinden gelmek için Android bilgisine değil, Google E-Tablolar bilgisine ihtiyaç vardır.

@Normal: Bu yüzden soruyu sordum (ve kapatmak için oy vermedim). Ben sadece bir cevap almak için gerekli uzman (ise) Asker çekmek yardımcı olmaya çalışıyorum.
ale

Yanıtlar:


26

Görünüşe göre şu anda E-Tablolar Android uygulamasında ne görüntüler ne de özel menü öğeleri çalışmıyor. Elektronik tabloda bir "işlev menüsü" oluşturmanızı öneririm. Örneğin:

  1. A1 hücresi "Bir işlev seçin" diyor
  2. B1 hücresinin, içeriği sahip olduğunuz işlevlerin adlarıyla kısıtlayan bir veri doğrulama kuralı vardır. Örneğimde, bunlar "insertSomething" ve "convertSomething" dir. (Veri doğrulama iletişim kutusundaki "yardımı göster" i işaretlemeyin, "yardım" pop-up'ı mobil cihazlarda bir sıkıntıdır.)
  3. onEditHer düzenlemede çalışan bir komut dosyası işlevi (basit tetikleyici), B1 içeriğinin değişip değişmediğini kontrol eder. Öyleyse, uygun işlevi çalıştırır.

İşte benim kod, gösteri amacıyla dahil iki işlevi ile:

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');
}  

Koşul /^\w+$/.test(e.value), sadece boş olmayan bir dizemiz olduğunu ve birinin bir şekilde B1 hücresine koyduğu kötü amaçlı kodu yürütmediğini kontrol etmektir. İşlev ile çağrıldıktan sonra this[e.value]();( thisgenel nesneyi ifade eder ve işlev adlarını içerir) B1 içeriği temizlenir. Biri aynı işlevi tekrar çalıştırmayı seçebilir veya başka bir işlevi kullanabilir.

Kavramın bir kanıtı olarak, uygulamadan ekran görüntüleri. Ekran görüntüsü 1: bir işlev seçimi

Seç

Ekran Görüntüsü 2: İşlev çalıştıktan sonra

sonra

Referanslar


1
Bu, çağrılan işlev bir e-posta göndermek için kullanılmadığı sürece çalışır. E-postalar bir düzenleme dinleyicisi tarafından tetiklenemez, bu nedenle düğme / özel menü sorunu gerçekten sınırlayıcıdır.
10klines

2
@ 10klines Bu durumda, basit onEdittetiği, tetiği yükleyen kullanıcının yetkisiyle çalışan, yüklenebilir bir tetiğe değiştirin.

İsterseniz resimler veya Veri Doğrulama yerine işlevleri tetiklemek için onay kutularını kullanabilirsiniz. Tabletimde eval işlevi çalışmadı, bu yüzden her bir işlev için bir grup onay kutusu ayarladım. Kodu buna göre ayarladım ve iyi çalışıyor. İpucu: Tabletiniz varsa Mesaj Kutusu kullanmayın - herhangi bir nedenle çalışmaz.
Tobias Sarnow

Bu güzel bir çözümdür, ancak işlev API'ya çağrı yapmak ve google onayı istediği için yanıt almak için çağrılırsa çalışmaz. Herhangi bir iş var mı?
JB

1
@JB Kullanım yüklenebilir Düzenleme tetik
TheMaster
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.