Cooper 덕분에 다음 스크립트가 있습니다.
function onMyEdit(e) {
e.source.toast('Entry');
const sh=e.range.getSheet();
if(sh.getName()=="Internal Audit Register" && e.range.columnStart==7 && isDate(new Date(e.value))) {
e.source.toast('Flag1');
const id=e.range.offset(0,-5).getDisplayValue();
const osh=e.source.getSheetByName("SOP Register");
const oshsr=3;
const org=osh.getRange(oshsr,1,osh.getLastRow()-oshsr+1,osh.getLastColumn());
const ovs=org.getDisplayValues();
for(var i=0;i<ovs.length;i++) {
if(ovs[i][0]==id) {
osh.getRange(oshsr+i,4).setValue(e.value).setNumberFormat("dd/MM/yyyy");
osh.getRange(oshsr+i,5).setValue("FALSE");
osh.getRange(oshsr+i,6).setValue("");
osh.getRange(oshsr+i,7).setValue("");
break;
}
}
}
}
function isDate(date){
return(Object.prototype.toString.call(date) === '[object Date]');
}
function createOnEditTriggerForSpreadsheet(funcname) {
var ssid=SpreadsheetApp.getActive().getId();
if(!isTrigger(funcname)) {
ScriptApp.newTrigger(funcname).forSpreadsheet(ssid).onEdit().create();
}
}
내가 원하는대로 작동하지만 이제 조회 기능에 추가 기준을 추가하고 싶습니다. 나는 평생 동안 어떻게 할 수 있는지 알아낼 수 없습니다. 이 스크립트는 현재 날짜가 G 열에 입력 될 때 트리거됩니다. 이제 동일한 행의 G 열과 A 열에 날짜가 입력 될 때 트리거되도록합니다 = "SOP". 나는 변화를 시도했다 :
if(sh.getName()=="Internal Audit Register" && e.range.columnStart==7 && isDate(new Date(e.value)) && e.range.offset(0,-6)=="SOP") {
그러나 이것은 작동하지 않습니다.
실제로 거의 다 왔습니다. offset
새로운 Range ( doc )를 반환하며 문자열과 직접 비교할 수는 없습니다. 먼저 값을 추출해야합니다. 예를 들면 :
e.range.offset(0,-6).getValue() == "SOP"
'SOP'가 계산 된 값 (공식 결과 등)이면 getValue()
call을로 대체하는 것을 고려할 수 있습니다 getDisplayValue()
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다