강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của choi506088964208
choi506088964208

câu hỏi đã được viết

Học tập tự động hóa công việc với Bảng tính Google (viết mã cho nhân viên văn phòng)

안녕하세요 onEdit 이쪽부분에서 오류가 나서 질문드립니다.

Viết

·

722

0

let ws=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("명렬표");
let ref=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("이름");

let options=ref.getRange(2,1,ref.getLastRow()-1,2).getValues()



function onEdit(e){
  const activerange=e.range;
  const row=activerange.getRow()
  const col=activerange.getColumn()

  const val=activerange.getValue()

  if (col===1){
    const filteredoptions=options.filter(r=>r[0]===val)
    const listofName=filteredoptions.map(r=>r[1])

    const cell=ws.getRange(row,2)
    setValidation(listofName,cell)

  }

}


function setValidation(list,cell){


const rule=SpreadsheetApp.newDataValidation().requireValueInList(list).build()
ws.getRange(cell).setDataValidation(rule)
 
 
 
 
 
TypeError: Cannot read property 'range' of undefined



}
 
 
여기서 e.range 이부분에서 오류가 지속발생합니다. ㅠㅠ 부탁드립니다.
 
typeError
Google-Sheetsregex

Câu trả lời 1

0

Master Norangi님의 프로필 이미지
Master Norangi
Người chia sẻ kiến thức

안녕하세요. 

 

현재 작성하신 코드 확인 한 결과로는 아래 setValidation 함수 부문에서 아래가 누락이 되어 onEdit이 참조해야 되는데 실행 이 되지 않는 것으로 보입니다.  ^^

cell.setDataValidation(rule)

아래와 같이 원본 코드를 보내드립니다. 비교해 보시면 차이점을 알 수 있을 것입니다.

let ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('master');
let ref = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ref')
let options = ref.getRange(2, 1, ref.getLastRow()-1, 2).getValues()

function onEdit(e) {
  const activerange = e.range;
  const row = activerange.getRow()
  const col = activerange.getColumn()
  const val = activerange.getValue()

  if(col === 1) {
    const filteredoptions = options.filter(r => r[0] === val)
    const listofName = filteredoptions.map(r => r[1])
    // console.log(listofName)
    const cell = ws.getRange(row, 2)
    setValidation(listofName, cell)
    }
  if(col === 3) {
    ws.getRange(row,4).setValue(new Date())
    }
}

function setValidation(list,cell) { 
  const ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('master');
  const rule = SpreadsheetApp.newDataValidation().requireValueInList(list).build()
  cell.setDataValidation(rule)
}

 

 

 

 

 
 
 
Hình ảnh hồ sơ của choi506088964208
choi506088964208

câu hỏi đã được viết

Đặt câu hỏi