셀을 복사 할 수있는 스크립트를 만들었습니다. OnEdit (시트 2의 col16) Col16 = "예") (현재 Col4)의 사용자 정의 열의 마지막 행에. 그러나 저는 에 대한 쿼리 기반 데이터를 가지고 있으므로 손으로 "Yes"를 입력 할 때만 내 스크립트가 데이터를 복사합니다. 이것이 바로이 스크립트를 버튼으로 실행해야하는 이유입니다. 시간 주도 트리거로 사용할 수도 있습니다. 단추로 작동하지 않습니다. 버튼을 클릭하여 작업 할 수 있도록 다음 스크립트를 어떻게 변경합니까?OnEdit 스크립트를 Run-by-button 스크립트로 변환하는 방법 (규칙을 사용하여 셀을 다른 시트로 복사)
function onEdit(e) {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
if (sheet.getName() !== '2' || e.range.getColumn() !== 16 || e.value !== 'Yes') return;
var value = e.range.offset(0,-12,1,1).getValue();
sheet = e.source.getSheetByName('1');
var grd = sheet.getRange("D:D").getValues();
var maxIndex = grd.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
sheet.getRange(maxIndex+2,e.range.getColumn()-12,1,1).setValue(value);
}
업데이트 :이처럼 내 스크립트를 변경하려 버튼에 할당 한, 그것은 "..... 다음 완료 러닝 ..."라고하지만, 그것을 버튼 - 클릭 후 아무것도 복사하지 마십시오 (하지만 OnEdit (e) 일 때 작동하며 오류가 나타나지 않습니다.) 하지만 "OnEdit (e)"에서 "copymissings()"로 변경하는 것만으로는 충분하지 않습니다. . 코드에서 뭔가,하지만 난 정확하게 도와주세요 모르겠어요 :
function copymissings() {
var s = SpreadsheetApp.getActive();
if (s.getName() !== '2' || range.getColumn() !== 16 || value !== 'Yes') return;
var value = range.offset(0,-12,1,1).getValues();
sht = s.getSheetByName('1');
var grd = sheet.getRange("D:D").getValues();
var maxIndex = grd.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
sht.getRange(maxIndex+2,range.getColumn()-12,1,1).setValues(value);
}
시각화 : CLICK TO SEE GIF
가능한 복제 [당신이 응용 프로그램 스크립트를 사용하여 구글 스프레드 시트의 셀 내부 UI를 추가하려면 어떻게?] (https://stackoverflow.com/questions/6876819/how-do-you-add-ui-inside -cells-in-a-google-spreadsheet-using-app-script) –
버튼으로 실행할 수 없다는 것은 무엇을 의미합니까? 너 뭐 해봤 니? 오류 메시지가 나타 났습니까? –
안녕하세요, 내 게시물을 업데이트했습니다 – Stz