Thêm trình kích hoạt tập lệnh vào Google Sheet sẽ hoạt động trong ứng dụng di động Android


13

Tôi có một trang tính Google bao gồm tập lệnh nên được chạy khi nhấp vào nút. Cách được đề xuất để làm điều này (theo như tôi có thể nói) là chèn một hình ảnh và sau đó đính kèm một tập lệnh vào hình ảnh được đề cập.

Điều này chỉ hoạt động tốt miễn là tôi mở trang tính trên máy tính để bàn của tôi. Tuy nhiên, nếu tôi mở trang tính trong ứng dụng Google trên Android, hình ảnh sẽ không xuất hiện. Theo như tôi có thể nói hành vi (thiếu) này không được ghi nhận ở bất cứ đâu, nhưng tôi đã tìm thấy một số người có cùng vấn đề.

Tôi đã tự hỏi làm thế nào tôi phá vỡ vấn đề này. Tôi đã bỏ lỡ một cái gì đó rõ ràng sẽ làm cho hình ảnh của tôi hiển thị trong ứng dụng Android? Hoặc có một cách đơn giản khác để thêm trình kích hoạt tập lệnh vào trang tính sẽ hoạt động trên thiết bị di động?


1
Đây thực sự là một vấn đề với ứng dụng Sheets gốc dành cho Android, phải không? Câu hỏi của bạn có lẽ tốt hơn ở những người đam mê Android .
ale

1
@AlE. Đó là một cách để xem xét nó, nhưng để khắc phục vấn đề, người ta cần có kiến ​​thức về Google Sheets, chứ không phải kiến ​​thức về Android.

@ Bình thường: Đó là lý do tại sao tôi đặt câu hỏi (và không bỏ phiếu để đóng). Tôi chỉ đang cố gắng giúp Asker thu hút chuyên gia (ise) cần thiết để có câu trả lời.
ale

Câu trả lời:


26

Có vẻ như hiện tại cả hình ảnh và các mục menu tùy chỉnh đều không hoạt động trong ứng dụng Sheets Android. Tôi đề nghị tạo một "menu chức năng" trong bảng tính. Ví dụ:

  1. Ô A1 nói "Chọn một chức năng"
  2. Ô B1 có quy tắc xác thực dữ liệu giới hạn nội dung theo tên của các hàm bạn có. Trong ví dụ của tôi, chúng là "insertS Something" và "convertS Something". (Đừng kiểm tra "hiển thị trợ giúp" trong hộp thoại xác thực dữ liệu, cửa sổ bật lên "trợ giúp" là một điều khó chịu trên thiết bị di động.)
  3. Một chức năng tập lệnh onEdit(kích hoạt đơn giản), chạy trên mọi chỉnh sửa, kiểm tra xem nội dung của B1 có thay đổi hay không. Nếu vậy, nó chạy chức năng thích hợp.

Đây là mã của tôi, với hai chức năng được bao gồm cho mục đích trình diễn:

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

Điều kiện /^\w+$/.test(e.value)là chỉ để kiểm tra chúng tôi có một chuỗi không trống và không thực thi mã độc mà ai đó đã đặt vào ô B1. Sau khi hàm được liệt kê this[e.value]();( thistham chiếu đến đối tượng toàn cục và chứa tên hàm), nội dung của B1 sẽ bị xóa. Người ta có thể chọn chạy lại chức năng tương tự, hoặc một chức năng khác.

Như một bằng chứng về khái niệm, đây là ảnh chụp màn hình từ ứng dụng. Ảnh chụp màn hình 1: chọn một chức năng

chọn

Ảnh chụp màn hình 2: sau khi chức năng đã chạy

sau

Người giới thiệu


Đây là một giải pháp rất đơn giản, sạch sẽ và hiệu quả. Làm rất tốt
StephenH

Điều này hoạt động miễn là chức năng được gọi không được sử dụng để gửi email. Email không thể được kích hoạt bởi người nghe chỉnh sửa, vì vậy vấn đề về nút / menu tùy chỉnh thực sự hạn chế.
10klines

2
@ 10klines Trong trường hợp đó, thay đổi trình onEditkích hoạt đơn giản thành trình kích hoạt có thể cài đặt, chạy với sự cho phép của người dùng đã cài đặt trình kích hoạt.

Nếu bạn muốn, bạn có thể sử dụng các hộp kiểm để kích hoạt các chức năng thay vì hình ảnh hoặc Xác thực dữ liệu. Với máy tính bảng của tôi, chức năng eval không hoạt động nên tôi đặt một loạt các hộp kiểm cho mỗi chức năng. Tôi điều chỉnh mã cho phù hợp và hoạt động tốt. Gợi ý: Nếu bạn có máy tính bảng không sử dụng Hộp thư - vì một số lý do.
Tobias Sarnow

Đây là một giải pháp tốt, tuy nhiên nó không hoạt động nếu chức năng được gọi để thực hiện các cuộc gọi đến API và nhận được phản hồi từ nó vì nó đang yêu cầu sự chấp thuận của google. Bất kỳ công việc xung quanh?
JB
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.