>

따라서 저는 절대로 JavaScript를 프로그래밍 한 적이 없으며 Google Script를 사용 해본 적이 없습니다. Excel과 Word의 Visual Basic과 매크로에 대해 상당히 잘 알고 있습니다. 상당히 기본적인 프로그램 만들기 : 스프레드 시트의 변수 목록을 훑어보고 각 값에 대해 새 시트를 만들고이 새 시트에 셀을 삽입하십시오 (1,1).

디버그는 문제없이 프로그램을 받아들입니다. 그러나 프로그램을 실행할 때 아무 일도 일어나지 않습니다 :

function kraft() {
  var rightHere = 
  SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A1:A131");
  var loopy;
 var goshDarn = "";
  for (loopy = 1; loopy < 132; loopy++) {
    celly = rightHere.getCell(loopy,1);
     vaerdi = celly.getValue();
     fed = celly.getTextStyle();
     console.log(vaerdi & " - " & fed);
     if (vaerdi != "" && fed.isBold == false) {
       SpreadsheetApp.getActiveSpreadsheet().insertSheet(vaerdi);
       var thisOne = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(vaerdi);
       thisOne.deleteRows(500,500);
       thisOne.deleteColumns(5, 23);
       thisOne.getRange(1,1).setFormula("=ArrayFormula(FILTER('Individuelle varer'!A16:D30015,'Individuelle varer'!A16:A30015=" & Char(34) & vaerdi & Char(34) & ")))");
    }    
  }
}

activeSheet는 이름으로 호출 할 수 있으므로 activeSpreadsheet 일 수 있습니다. 그러나 범위 A1 : A131에는 많은 변수가 있습니다. 때로는 빈 줄과 새 머리글이 있습니다 (새 머리글은 굵게 표시됨). 그러나 기본적으로 여기에 선과 같은 이름으로 약 120 개의 새로운 시트가 스프레드 시트에 표시되기를 원합니다. 그러나 아무 일도 일어나지 않습니다. 통나무를 던지려고했지만 어디에서나 그 값을 읽을 수 없습니다.

스크립트를 스프레드 시트에 연결하는 방법에 대한 가장 기본적인 기본 사항이 없어야합니다.

편집 : 여기 및 다른 장소의 팁에 따라 코드를 업데이트하려고 시도했지만 여전히 멋진 일은 없지만 지금은 다음과 같습니다.

function kraft() {
  var rightHere = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A1:A131");
  var loopy;
  var goshDarn = "";
  for (loopy = 1; loopy < 132; loopy++) {
    celly = rightHere.getCell(loopy,1);
    vaerdi = celly.getValue();
    fed = celly.getFontWeight();
    console.log(vaerdi & " - " & fed);
    if (vaerdi != "" && fed.isBold == false) {
      SpreadsheetApp.getActiveSpreadsheet().insertSheet(vaerdi);
      var thisOne = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(vaerdi);
      thisOne.deleteRows(500,500);
      thisOne.deleteColumns(5, 23);
      thisOne.getRange(1,1).setFormula("=ArrayFormula(FILTER('Individuelle varer'!A16:D30015,'Individuelle varer'!A16:A30015=" + "\"" + vaerdi + "\"" + ")))");
    }
  }
}

EDIT2 : 내가 필요로하는 조언 덕분에 이제이 코드로 문제가 해결되었습니다 :

function kraft() {
  var rightHere =         SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A1:A131");
  var loopy;
  for (loopy = 1; loopy < 132; loopy++) {
    celly = rightHere.getCell(loopy,1);
    vaerdi = celly.getValue();
    fed = celly.getFontWeight()
    console.log(vaerdi & " - " & fed);
    if (vaerdi != "" && fed != "bold") {
      SpreadsheetApp.getActiveSpreadsheet().insertSheet(vaerdi);
      var thisOne = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(vaerdi);
      thisOne.deleteRows(500,499);
      thisOne.deleteColumns(5, 20);
      thisOne.getRange(1,1).setFormula("=ArrayFormula(FILTER('Individuelle varer'!A16:D30015;'Individuelle varer'!A16:A30015=" + "\"" + vaerdi + "\"" + "))");
    }   
  }
}


  • 답변 # 1

    스크립트에 여러 가지 문제가 있지만 가장 큰 문제는 'if'문에서 isBold () 함수를 실제로 호출하지 않는다는 것입니다.

    if (value && format.isBold() == false) {
         //do something
        }
    
    

    'fed.isBold'에서 괄호를 생략했기 때문에 표현식은 'true'로 평가되지 않습니다. 괄호없이 'isBold'는 함수이므로 Object 유형입니다.

    스크립트가 제대로 실행되지 못하게하는 다른 문제가 있습니다 :

    <올>

    'var'키워드를 사용하여 변수를 선언하고 전역 범위를 오염시키지 않습니다. 결과적으로'for'루프 내에서 선언 한 모든 변수는 함수 전용이 아닙니다. 대신, 전역 객체에 연결되며 함수 외부에서 액세스 할 수 있습니다. https://prntscr.com/kjd8s5

    내장 디버거를 사용하지 않습니다. 함수 실행이 디버깅되지 않습니다. 중단 점을 설정하고 디버그 단추를 클릭하여 기능을 단계별로 실행하고 실행중인 모든 값을 검사해야합니다.

    존재하지 않는 열을 삭제합니다. 새 시트를 만들 때deleteColums ()를 호출합니다. 총 26 개의 열이 있습니다. 첫 번째 매개 변수는 시작 열이고 두 번째 매개 변수는 삭제해야하는 열 수를 지정합니다. 열 5에서 시작하여 23 개의 열을 제거하도록 스크립트에 지시하면 예외가 발생합니다. 이러한 오류를 피하려면 항상 설명서를 참조하십시오.

    console.log가 스크립트 편집기의 컨텍스트에 없습니다. 브라우저 내에서 스크립트를 실행하고 있지 않으므로 브라우저 오브젝트 모델을 사용할 수 없습니다. Logger.log ()를 사용하십시오. 이 내용은 설명서에 자세히 설명되어 있습니다.

    수식의 형식이 잘못되었습니다.

    JS는 익숙하지 않은 동적 유형 언어입니다. 코드를 작성하기 전에 최소한의 조사를하지 않으면 많은 어려움을 겪게됩니다.

관련 자료

  • 이전 python - Django에서 다 대다 필드의 여러 값에 대한 모델 결과를 필터링하는 방법
  • 다음 bash - 알파벳이 아닌 문자를 '-'로 바꾸려면 tr을 사용하면 문자열 끝에 여분의 문자가 추가됩니다