태그 보관물: google-apps-script

google-apps-script

새 행을 자동으로 삽입하고 마지막 행의 함수 / 수식을 유지하는 방법은 무엇입니까? 수식이있는 셀이있는 테이블이 있습니다. 마지막으로 사용한 행의

다음과 같이 함수 / 수식이있는 셀이있는 테이블이 있습니다.

여기에 이미지 설명을 입력하십시오

마지막으로 사용한 행의 함수 / 수식을 복사하여 새 행을 만드는 스크립트가 필요합니다. 새 행을 만드는이 스크립트를 찾았 지만 functions / formulas는 복사하지 않습니다 . 수동으로 선택하고 복사하지 않고 어떻게 Google Apps Script에서이 형식 복사 작업을 구현할 수 있습니까?



답변

아래 코드를 사용하여 수식의 값을 일반 값으로 복사하십시오. 스프레드 시트 메뉴에서 도구를 선택하여 코드를 추가하십시오. 그런 다음 스크립트 편집기를 선택하고 코드를 추가하십시오. “버그”버튼을 누르고 스크립트를 인증하십시오.

암호

// global
var ss = SpreadsheetApp.getActive();

function onOpen() {
  var menu = [{name:"Add New Last Row", functionName:"addRow"}];
  ss.addMenu("Extra", menu);
}

function addRow() {
  var sh = ss.getActiveSheet(), lRow = sh.getLastRow();
  var lCol = sh.getLastColumn(), range = sh.getRange(lRow,1,1,lCol);
  sh.insertRowsAfter(lRow, 1);
  range.copyTo(sh.getRange(lRow+1, 1, 1, lCol), {contentsOnly:false});
}

contentOnly 를 설정하면 false표준 사본이 생성됩니다. 로 설정하면 true값만 붙여 넣습니다. 찾은 예제 스크립트는 값을 붙여 넣는 것 이상을 수행합니다 …..

나는 당신을 위해 예제 파일을 만들었습니다 : 수식으로 행 추가


답변

이 ArrayFormula는 스크립트를 사용하지 않고도 동일하게 수행 할 수 있습니다. D4에 입력하면 그 아래의 빈 셀이 있으면 자동으로 이월됩니다.

ArrayFormula(vlookup(B4:B:tax_table!$A$2:$G$8;3;true))

참고 : “B4 : B”는 B4에서 시작하여 열 끝까지 모든 셀을 봅니다.

ArrayArrayula는 그 아래의 셀에 자신을 복사합니다. 그 아래의 셀이 비어 있는지 확인하십시오.


답변

상단 (첫 번째 행)에 새 행을 추가하고 첫 번째 상단 행에서 수식을 복사해야하는 경우 사용 getFormulas()setFormulas()함수에서 수식을 복사해야 합니다. firstRow예를 들어 스프레드 시트에 헤더가있는 경우 값 을 2로 변경할 수 있습니다 .

function addFirstRow() {
    var firstRow = 1;
    var sh = ss.getActiveSheet();
    var lCol = sh.getLastColumn();
    var range = sh.getRange(firstRow, 1, 1, lCol);
    var formulas = range.getFormulas();
    sh.insertRowsAfter(1, 1);
    newRange = sh.getRange(firstRow, 1, 1, lCol);
    newRange.setFormulas(formulas);
}

답변

이 문제를 해결하기 setFormula(range)위해 예 를 들어을 사용했습니다 .

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
 cell.setFormula("=SUM(B3:B4)");

행 인덱스에 따라 수식이 자동으로 증가합니다.

마지막으로 onUpdate 또는 onEdit 트리거를 추가 할 수 있습니다.


답변