열에서 값을 검색하고 행을 덮어 씁니다. 그렇지 않으면 새 행을 추가합니다.

사이먼 스톡 하우스

사용자가 HTML 양식을 사용하여 스프레드 시트에 데이터를 입력 할 수있는 스크립트를 작업 중입니다. 스크립트가 열을 통해 양식의 문자열을 검색하는 기능을 구현하려고합니다. 발견되면 행의 이전 데이터를 양식의 데이터로 덮어 써야합니다. 그렇지 않은 경우 데이터를 새 행으로 추가해야합니다.

이것은 내가 지금 가지고있는 스 니펫입니다.

    var col4 = sheet.getRange(2, 4, sheet.getLastRow(), 1);
    var searchCol4 = SSNs.createTextFinder(e.parameter.Col4);
    searchCol4.matchEntireCell(true);
    var existingCol4Row = searchCol4.findNext().getRow();

    if (existingCol4Row !== null) {
      var nextRow = existingCol4Row
    } else {
      var nextRow = sheet.getLastRow() + 1
    }

    var newRow = headers.map(function(header) {
      return e.parameter[header]
    })

    sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])

내가 가진 문제는 스크립트가 열에서 일치하는 항목을 찾은 경우에만 작동한다는 것입니다. 그렇지 않은 경우 새 행을 추가하지 않습니다. 전체 if ...문을 var nextRow = sheet.getLastRow() + 1다음으로 바꾸면 스크립트가 새 행을 추가하지만 분명히 더 이상 이전 데이터를 대체하지 않습니다. 또한 existingCol4Row동일한 결과로 조건을으로 변경해 보았습니다 .

팁이 있습니까?


편집 : ziganotschka 덕분에 코드가 작동했습니다. 나는 할 수 있는지 확인하는 조건문을 변경 searchCol4.findNext()했다 null보다는 searchCol4.findNext().getRow(). 또한 null 범위에서 메서드를 호출하면 코드가 실패하는 것처럼 보이기 때문에 코드 가 그렇지 않은 .getRow()경우 에만 호출 되도록했습니다 (로깅을 포함하여 해당 행을 지나는 것은 실행되지 않음). 다음은 작업 스 니펫입니다.searchCol4.findNext()null

var Col4 = sheet.getRange(2, 4, sheet.getLastRow(), 1);
    var searchCol4 = Col4.createTextFinder(e.parameter.Col4);
    searchCol4.matchEntireCell(true);
    var existingCol4 = searchCol4.findNext();

    if (existingCol4 !== null) {
      var nextRow = existingCol4.getRow();
    } else {
      var nextRow = sheet.getLastRow() + 1
    }
지가 노츠 카

로그 searchSSNs.findNext()searchSSNs.findNext().getRow().

결과

경우 searchSSNs.findNext()이며 NULL, getRow()귀하의 경우 행이 그렇게 당신에게 검색 범위의 첫 번째 행을 반환합니다.

그러므로,

searchSSNs.findNext().getRow() 결코 될 것입니다 NULL

해결책

조건문을 다음으로 변경하십시오.

if (searchSSNs.findNext() !== null) {

사이드 노트 : 텍스트 파인더 범위 ( searchSSNs또는 searchCol4?) 의 이름과 혼동 이 있습니다. 타이핑 실수라고 생각합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

값이있는 경우 값을 늘리고 그렇지 않으면 DynamoDB에 새 항목을 추가합니다.

분류에서Dev

마지막 행에 연속적으로 나타나면 값을 추가하고 그렇지 않으면 동일한 값을 유지합니다.

분류에서Dev

추가하지 않고 로거의 로그 파일을 덮어 씁니다

분류에서Dev

dict를 다른 dict에 값으로 추가하면 이전 값을 덮어 씁니다.

분류에서Dev

파이썬은 부모 방법과 이름을 유지하면서 부모 행동을 덮어 씁니다.

분류에서Dev

다른 인덱스가있는 고유 한 값을 기반으로 첫 번째 데이터 프레임에서 두 번째 데이터 프레임으로 값을 업데이트하여 각 행을 반복합니다. 그렇지 않으면 새 ID를 추가하고 할당합니다.

분류에서Dev

문자열을 찾을 때마다 행렬은 1로 바뀐 다음 1 씩 증가합니다. 그렇지 않으면 null을 발견하고 0을 입력하고 루프 일반 코드에 대한 새 행렬 JavaScript를 표시합니다.

분류에서Dev

표에서 값을 덮어 씁니다.

분류에서Dev

VBA : 단어 표의 첫 번째 셀에 특정 값이 있으면 작업을 수행하고 그렇지 않으면 다음 표로 이동합니다.

분류에서Dev

두 개의 다른 디렉토리에있는 기존 파일을 비교하고, 존재하지 않으면 복사하고, 그렇지 않으면 덮어 씁니다.

분류에서Dev

마지막 배열 값이 다른 값을 덮어 씁니다.

분류에서Dev

2D 배열 값을 설정하면 C에서 다른 값을 덮어 씁니다.

분류에서Dev

특정 값이 0이면 1을 반환하고 그렇지 않으면 열의 원래 값을 반환하는 df에 열을 추가합니다.

분류에서Dev

해시에 키 / 값 쌍을 추가하는 더 우아한 방법이 있습니까? (키 == nil이면 새 키 / 값을 할당하고 그렇지 않으면 기존 키에 값을 추가합니다.)

분류에서Dev

목록에 값이 있으면 다른 목록에 추가하고, 그렇지 않으면 미리 정의 된 값을 추가합니다.

분류에서Dev

새 행으로 줄 바꿈하지 않고 CSS 그리드에 열을 동적으로 추가하려면 어떻게해야합니까?

분류에서Dev

prepend 도메인 검색은 앞에 추가하지 않고 덮어 씁니다.

분류에서Dev

새 항목이 추가되면 JSF Java 목록을 덮어 씁니다.

분류에서Dev

WinSCP는 묻지 않고 파일을 덮어 씁니다.

분류에서Dev

WinSCP는 묻지 않고 파일을 덮어 씁니다.

분류에서Dev

파일을 저장하고 Java GUI에 있으면 덮어 씁니다.

분류에서Dev

새 키와 값을 추가 할 때 사전 값을 덮어 씁니다.

분류에서Dev

AngularJS UI 그리드가 행 선택 색상을 동적으로 덮어 씁니다.

분류에서Dev

Java는 조건에 따라 인스턴스화 된 목록에 추가하고 그렇지 않으면 새 목록을 인스턴스화합니다.

분류에서Dev

문자열에서 값을 검색하고 값이 있으면 새 열에 모두 인쇄합니다.

분류에서Dev

배열로 데이터를 푸시하면 값을 덮어 씁니다.

분류에서Dev

열 값을 기반으로 목록을 만들고 해당 목록을 사용하여 for 루프로 행 값을 덮어 쓰지 않고 df의 문자열 열에서 단어를 추출합니다.

분류에서Dev

새 항목으로 LocalStorage 항목을 덮어 씁니다.

분류에서Dev

SQL-입력 문자열이 비어 있으면 모든 행을 반환하고 그렇지 않으면 일치를 시도합니다.

Related 관련 기사

  1. 1

    값이있는 경우 값을 늘리고 그렇지 않으면 DynamoDB에 새 항목을 추가합니다.

  2. 2

    마지막 행에 연속적으로 나타나면 값을 추가하고 그렇지 않으면 동일한 값을 유지합니다.

  3. 3

    추가하지 않고 로거의 로그 파일을 덮어 씁니다

  4. 4

    dict를 다른 dict에 값으로 추가하면 이전 값을 덮어 씁니다.

  5. 5

    파이썬은 부모 방법과 이름을 유지하면서 부모 행동을 덮어 씁니다.

  6. 6

    다른 인덱스가있는 고유 한 값을 기반으로 첫 번째 데이터 프레임에서 두 번째 데이터 프레임으로 값을 업데이트하여 각 행을 반복합니다. 그렇지 않으면 새 ID를 추가하고 할당합니다.

  7. 7

    문자열을 찾을 때마다 행렬은 1로 바뀐 다음 1 씩 증가합니다. 그렇지 않으면 null을 발견하고 0을 입력하고 루프 일반 코드에 대한 새 행렬 JavaScript를 표시합니다.

  8. 8

    표에서 값을 덮어 씁니다.

  9. 9

    VBA : 단어 표의 첫 번째 셀에 특정 값이 있으면 작업을 수행하고 그렇지 않으면 다음 표로 이동합니다.

  10. 10

    두 개의 다른 디렉토리에있는 기존 파일을 비교하고, 존재하지 않으면 복사하고, 그렇지 않으면 덮어 씁니다.

  11. 11

    마지막 배열 값이 다른 값을 덮어 씁니다.

  12. 12

    2D 배열 값을 설정하면 C에서 다른 값을 덮어 씁니다.

  13. 13

    특정 값이 0이면 1을 반환하고 그렇지 않으면 열의 원래 값을 반환하는 df에 열을 추가합니다.

  14. 14

    해시에 키 / 값 쌍을 추가하는 더 우아한 방법이 있습니까? (키 == nil이면 새 키 / 값을 할당하고 그렇지 않으면 기존 키에 값을 추가합니다.)

  15. 15

    목록에 값이 있으면 다른 목록에 추가하고, 그렇지 않으면 미리 정의 된 값을 추가합니다.

  16. 16

    새 행으로 줄 바꿈하지 않고 CSS 그리드에 열을 동적으로 추가하려면 어떻게해야합니까?

  17. 17

    prepend 도메인 검색은 앞에 추가하지 않고 덮어 씁니다.

  18. 18

    새 항목이 추가되면 JSF Java 목록을 덮어 씁니다.

  19. 19

    WinSCP는 묻지 않고 파일을 덮어 씁니다.

  20. 20

    WinSCP는 묻지 않고 파일을 덮어 씁니다.

  21. 21

    파일을 저장하고 Java GUI에 있으면 덮어 씁니다.

  22. 22

    새 키와 값을 추가 할 때 사전 값을 덮어 씁니다.

  23. 23

    AngularJS UI 그리드가 행 선택 색상을 동적으로 덮어 씁니다.

  24. 24

    Java는 조건에 따라 인스턴스화 된 목록에 추가하고 그렇지 않으면 새 목록을 인스턴스화합니다.

  25. 25

    문자열에서 값을 검색하고 값이 있으면 새 열에 모두 인쇄합니다.

  26. 26

    배열로 데이터를 푸시하면 값을 덮어 씁니다.

  27. 27

    열 값을 기반으로 목록을 만들고 해당 목록을 사용하여 for 루프로 행 값을 덮어 쓰지 않고 df의 문자열 열에서 단어를 추출합니다.

  28. 28

    새 항목으로 LocalStorage 항목을 덮어 씁니다.

  29. 29

    SQL-입력 문자열이 비어 있으면 모든 행을 반환하고 그렇지 않으면 일치를 시도합니다.

뜨겁다태그

보관