Google Apps 스크립트 인 onChange가 변수에 트리거 개체를 전달할 수 없습니다. [중복]
이 게시물은 닫혔지만 다른 곳에서 비슷한 문제를 찾을 수 없었습니다.
onChange () 트리거에서 행을 숨기는 스크립트를 작성하려고합니다. 셀이 "0"이되면 해당 셀이있는 행을 숨기고 싶습니다. 내 첫 번째 게시물의 의견은 onChange에서 전달 된 객체에 범위가 포함되어 있지 않다는 것을 알려주었습니다. 이 문제를 해결할 수있는 해결 방법이 있습니까?
내 스프레드 시트에는 백엔드 용 입력 시트와 클라이언트로가는 프런트 엔드 용 출력 시트가 있습니다. onChange 트리거가 필요하므로 데이터가 프런트 엔드로 이동함에 따라 클라이언트에 이메일을 보낼 수있는 형식이 좋습니다. 가장 중요한 것은 숨길 빈 ( '0) 행이 필요하다는 것입니다.
나는 새롭고 배우기 때문에 onChange 객체가 범위를 포함하지 않기 때문에 내가 작성한 내용이 작동하지 않습니다. 감사합니다.
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.range;
var VALUE = cell.getValue();
if(VALUE == 0){
sheet.hideRow(cell);
}
}
나는 또한 시도했다 :
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.getValue();
if(cell == 0){
sheet.hideRow(cell);
}
}
답변
onChange 트리거에서 반환 된 범위 값이 없습니다. 이벤트 객체는 다음과 같습니다.
{"authMode":"FULL","changeType":"INSERT_ROW","source":{},"triggerUid":"","user": {"email":","nickname":""}}
또한 onChange에는 설치 가능한 트리거가 필요합니다.
onChange 이벤트 객체
방아쇠가 혼란스러워 보입니다 . 는 "큰"또는 구조적 변화가 아닌 변경된 값에 비해 발생 트리거 화재. 로부터 문서 :onChange onEditonChange
설치 가능한 변경 트리거는 사용자가 새 시트를 추가하거나 열을 제거하는 등 스프레드 시트 자체의 구조를 수정할 때 실행됩니다.
이벤트 개체 사양에서 onChange
트리거 에서 프로그래머에게 전달 된 값이 없으므로 원하는 기능 유형이 쉽게 수행되지 않는다는 것을 알 수 있습니다.
onEdit
찾고있는 것에 더 가깝게 작동 하는 트리거 를 사용하려고합니다 . 값 변경시 발생하고 새 값과 이전 값을 제공합니다. onEdit
또한 " 간단한 트리거 "이므로 에서처럼 추가 트리거를 설치할 필요가 없습니다 onChange
.
onEdit
코드를 사용하면 다음과 같이 표시됩니다.
function onEdit(e) {
val range = e.range;
val sheet = SpreadsheetApp.getActiveSheet();
if (e.value == 0) {
var rowNum = e.range.getRow();
sheet.hideRow(rowNum);
}
}