Tambahkan pemicu skrip ke Google Sheet yang akan berfungsi di aplikasi seluler Android

13

Saya memiliki lembar Google yang menyertakan skrip yang harus dijalankan ketika mengklik tombol. Cara yang disarankan untuk melakukan ini (sejauh yang saya tahu) adalah menyisipkan gambar dan kemudian melampirkan skrip ke gambar yang dimaksud.

Ini berfungsi dengan baik selama saya membuka lembar di desktop saya. Namun, jika saya membuka sheet di aplikasi Android Google sheet, gambar tidak muncul. Sejauh yang saya tahu ini (kurangnya) perilaku tidak didokumentasikan di mana pun, tetapi saya telah menemukan sejumlah orang dengan masalah yang sama.

Saya bertanya-tanya bagaimana saya menghindari masalah ini. Apakah saya kehilangan sesuatu yang jelas yang akan membuat gambar saya terlihat di aplikasi Android? Atau adakah cara sederhana lain untuk menambahkan pemicu skrip ke sheet yang akan berfungsi pada ponsel?

Probaton
sumber
2
Ini benar-benar masalah dengan aplikasi Lembar asli untuk Android, bukan? Pertanyaan Anda mungkin lebih baik di Android Enthusiasts .
ale
1
@AlE. Itu salah satu cara untuk melihatnya, tetapi untuk mengatasi masalah ini orang perlu pengetahuan tentang Google Sheets, bukan pengetahuan tentang Android.
@Normal: Itu sebabnya saya mengajukan pertanyaan (dan tidak memilih untuk menutup). Saya hanya mencoba membantu Penanya menarik ahli (ise) yang diperlukan untuk mendapatkan jawaban.
ale

Jawaban:

26

Tampaknya gambar atau item menu kustom tidak berfungsi di aplikasi Android Sheets saat ini. Saya sarankan membuat "menu fungsi" dalam spreadsheet. Sebagai contoh:

  1. Sel A1 mengatakan "Pilih fungsi"
  2. Sel B1 memiliki aturan validasi data yang membatasi konten dengan nama fungsi yang Anda miliki. Dalam contoh saya, mereka adalah "insertSomething" dan "convertSomething". (Jangan centang "tunjukkan bantuan" dalam dialog validasi data, popup "bantuan" adalah gangguan pada ponsel.)
  3. Fungsi skrip onEdit(pemicu sederhana), berjalan pada setiap pengeditan, memeriksa apakah konten B1 telah berubah. Jika demikian, ia menjalankan fungsi yang sesuai.

Ini kode saya, dengan dua fungsi yang disertakan untuk tujuan demonstrasi:

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

Syaratnya /^\w+$/.test(e.value)hanya untuk memeriksa apakah kita memiliki string kosong dan tidak menjalankan kode jahat yang seseorang masukkan ke dalam sel B1. Setelah fungsi envoked with this[e.value]();( thismerujuk ke objek global dan berisi nama fungsi) konten B1 dihapus. Seseorang dapat memilih untuk menjalankan fungsi yang sama lagi, atau yang lain.

Sebagai bukti konsep, berikut adalah screenshot dari aplikasi. Tangkapan layar 1: seleksi suatu fungsi

memilih

Tangkapan layar 2: setelah fungsi berjalan

setelah

Referensi

Sang Guru
sumber
1
Ini berfungsi selama fungsi yang dipanggil tidak digunakan untuk mengirim email. Email tidak dapat dipicu oleh edit listener, sehingga masalah tombol / menu kustom benar-benar membatasi.
10klines
2
@ 10klines Dalam hal ini, ubah onEditpemicu sederhana menjadi pemicu yang dapat diinstal, yang berjalan dengan otorisasi pengguna yang memasang pemicu.
Jika mau, Anda dapat menggunakan kotak centang untuk memicu fungsi alih-alih gambar atau Validasi Data. Dengan tablet saya fungsi eval tidak berfungsi jadi saya mengatur banyak kotak centang untuk masing-masing fungsi. Saya menyesuaikan kode sesuai dan berfungsi dengan baik. Petunjuk: Jika Anda memiliki tablet, jangan gunakan Kotak Pesan - tidak berfungsi karena suatu alasan.
Tobias Sarnow
Ini adalah solusi yang bagus, namun tidak berfungsi jika fungsinya dipanggil untuk melakukan panggilan ke API dan mendapatkan respons darinya karena meminta persetujuan Google. Ada yang bekerja?
JB
1
@JB Gunakan pemicu Edit yang dapat diinstal
TheMaster