Android 모바일 앱에서 작동하는 스크립트 트리거를 Google 스프레드 시트에 추가


13

버튼을 클릭 할 때 실행 해야하는 스크립트가 포함 된 Google 시트가 있습니다. 이 작업을 수행하는 데 권장되는 방법은 이미지를 삽입 한 다음 해당 이미지에 스크립트를 첨부하는 것입니다.

바탕 화면에서 시트를 열면 제대로 작동합니다. 그러나 Android Google 시트 앱에서 시트를 열면 이미지가 나타나지 않습니다. 내가 말할 수있는 한이 (부족한) 행동은 어디에도 문서화되어 있지 않지만 같은 문제를 가진 많은 사람들을 발견했습니다.

이 문제를 어떻게 피할 수 있을지 궁금했습니다. Android 앱에서 이미지를 볼 수있는 확실한 내용이 누락 되었습니까? 아니면 모바일에서 작동하는 시트에 스크립트 트리거를 추가하는 또 다른 간단한 방법이 있습니까?


2
이것은 실제로 Android 용 기본 스프레드 시트 앱의 문제입니다. 귀하의 질문은 아마 안드로이드 매니아 에서 더 낫습니다 .
ale

1
@에일. 그것은 그것을 보는 한 가지 방법이지만, 문제를 극복하기 위해서는 안드로이드에 대한 지식이 아닌 Google 스프레드 시트에 대한 지식이 필요합니다.

@Normal : 그렇기 때문에 제가 질문을했고 투표를하지 않았습니다. Asker가 답변을 얻는 데 필요한 전문가를 유치하도록 돕기 위해 노력하고 있습니다.
ale

답변:


26

현재 이미지 및 맞춤 메뉴 항목이 Sheets Android 앱에서 작동하지 않는 것 같습니다. 스프레드 시트 내에 "기능 메뉴"를 만드는 것이 좋습니다. 예를 들면 다음과 같습니다.

  1. 셀 A1에 "기능 선택"이 표시됩니다.
  2. 셀 B1에는 컨텐츠를 보유한 기능의 이름으로 제한하는 데이터 유효성 검증 규칙이 있습니다. 이 예에서는 "insertSomething"및 "convertSomething"입니다. (데이터 유효성 검사 대화 상자에서 "도움말 표시"를 선택하지 마십시오. "도움말"팝업은 모바일에서 귀찮습니다.)
  3. onEdit모든 편집에서 실행 되는 스크립트 기능 (간이 트리거)은 B1의 내용이 변경되었는지 확인합니다. 그렇다면 적절한 기능을 실행합니다.

다음은 데모 목적으로 포함 된 두 가지 기능이있는 코드입니다.

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)은 비어 있지 않은 문자열이 있는지 확인하고 누군가가 B1 셀에 넣은 악성 코드를 실행하지 않는 것입니다. 함수가 호출 된 후 this[e.value]();( this글로벌 오브젝트를 참조하고 함수 이름을 포함 함) B1의 컨텐츠가 지워집니다. 동일한 기능을 다시 실행하거나 다른 기능을 실행하도록 선택할 수 있습니다.

개념 증명으로 다음은 앱의 스크린 샷입니다. 스크린 샷 1 : 기능 선택

고르다

스크린 샷 2 : 기능이 실행 된 후

후

참고 문헌


1
이것은 호출되는 함수가 이메일을 보내는 데 사용되지 않는 한 작동합니다. 이메일은 편집 리스너에 의해 트리거 될 수 없으므로 버튼 / 사용자 정의 메뉴 문제는 실제로 제한적입니다.
10klines

2
@ 10klines이 경우 단순 onEdit트리거를 설치 가능한 트리거로 변경하십시오.이 트리거는 트리거를 설치 한 사용자의 권한으로 실행됩니다.

원하는 경우 확인란을 사용하여 그림 또는 데이터 유효성 검사 대신 기능을 트리거 할 수 있습니다. 태블릿에서 eval 기능이 작동하지 않아서 각 기능마다 확인란을 설정했습니다. 그에 따라 코드를 조정하고 정상적으로 작동합니다. 힌트 : 태블릿이있는 경우 메시지 상자를 사용하지 마십시오. 어떤 이유로 든 작동하지 않습니다.
Tobias Sarnow

이것은 좋은 해결책이지만 Google 승인을 요청하면서 API를 호출하고 응답을 얻기 위해 함수를 호출하면 작동하지 않습니다. 해결 방법이 있습니까?
JB

1
@JB 설치 가능한 편집 트리거 사용
TheMaster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.