핵심 답변 Numbers를 JXA로 움직여 실제 계산 화면을 녹화할 때 저희를 막은 것은 계산이 아니라 화면 쪽이었습니다. 다른 시트 셀을 고치면 보이는 시트가 바뀌었고, 병합 셀 안 입력칸은 수식 참조를 밀어냈고, 창 단독 캡처 시험은 프레임 0개였습니다. 녹화 전 시간표를 통째로 재생해 33단계 결과를 대조하면서 앞의 두 문제를 찾았습니다.

무엇을 했나: 재생 보고서

Apple Numbers가 실제로 계산하는 화면을 소리 없이 실시간으로 녹화하려 했습니다. JXA(JavaScript for Automation) 스크립트가 정해진 시간표대로 입력값을 넣고 셀 선택과 시트 전환을 하며, 계산 결과 셀은 모두 Numbers 수식이 채웁니다. 스크립트는 결과를 쓰지 않고 화면에 나온 값을 읽어 기록만 합니다.

녹화 전에 시간표 전체를 문서에 재생하고, 33단계마다 결과 셀을 예상값과 비교했습니다. 아래는 Mac 한 대(macOS 26.6.2, Numbers 15.3.1)에서 2026년 9월 30일에 저장한 보고서로, 모든 환경의 규칙은 아닙니다.

보고서 조작 오류 일치 단계 다음에 바꾼 것
dryrun 363 0 26/33 카운터와 시트 전환(1·3번)
dryrun2 387 0 33/33 값은 맞음(머리글 병합이 풀려 보였다는 것은 저자 관찰 — 이 기록 파일에는 없음)
dryrun3·4 387 0 26/33 마지막에 병합하자 수식 참조가 밀림(2번)
dryrun5 387 0 33/33 입력칸을 병합 없는 표로 옮김
dryrun6 387 0 33/33 시작할 때 입력칸 비우기(3번)

스크립트 조작 하나는 평균 약 0.04초였고, 계획보다 늦게 시작한 가장 큰 차이는 0.19초(dryrun3)였습니다. 그 전에는 Numbers가 문서를 ‘무제’로 보여 주는데 스크립트가 파일 이름으로 찾다가 모든 조작이 실패한 실행도 있었지만, 보고서가 없어 메모로만 적습니다.

1. 다른 시트를 고치면 화면이 넘어감

요약 시트에는 계산 시트의 입력을 그대로 보여 주는 ‘현재 줄’이 있었습니다. 저희 설정에서는 요약 시트를 띄운 채 계산 시트의 값을 바꾸면 Numbers가 계산 시트로 화면을 넘겼습니다.

바꾼 것: 요약 시트에 자체 입력칸을 두었습니다. 요약 시트가 보이는 동안에는 그 시트 셀만 고치고, 계산 시트로 돌아가는 순간 입력을 한 번에 맞춥니다.

2. 병합 셀 안의 입력칸

‘진행한 빨래 횟수’ 입력칸이 병합 범위(M2:T2) 안에 있었습니다. 병합한 뒤 $M$2를 가리키던 수식이 $N$2로 읽혔고, 200칸짜리 진행 격자가 계속 0에 머물렀습니다(dryrun3·4).

바꾼 것: 입력칸을 병합 없는 작은 표로 옮기고 격자 수식이 그 칸을 보게 했더니 33단계가 모두 맞았습니다(dryrun5·6).

3. 스테퍼 셀과 빈칸 만들기

저희 설정에서 스테퍼 형식을 준 카운터 셀은 10, 20처럼 넣은 값을 유지하지 않고 1에 머물러서 스테퍼 형식을 뺐습니다. 다른 스테퍼 입력칸은 아무것도 넣기 전에 1을 보여서, 준비 단계 끝에 빈 값으로 만듭니다. 또 value = ""는 글꼴 설정을 지킨 채 셀을 비웠고, clear 명령은 글꼴까지 10pt로 되돌렸습니다.

셀을 가리키는 방법도 중요합니다. Ask Different에는 AppleScript로 시트의 셀 “E1″에 바로 값을 넣다가 -10006 오류가 난 질문이 있고, 채택된 답은 table 1 of sheet 3처럼 표를 거쳐 셀을 가리켜 해결했습니다(참고 자료 첫 줄). 저희 JXA도 문서, 시트, 표, 셀 순서로 가리킵니다.

// JXA 스케치(문서·시트·표 이름이 미리 있어야 함)
const s = Application('com.apple.Numbers').documents[0].sheets['Calc'];
s.tables['Inputs'].cells['B5'].value = 2; // 입력
s.tables['Inputs'].cells['B6'].value = ''; // 서식은 두고 비우기
s.tables['Results'].cells['B4'].value(); // 수식 결과 읽기

4. 저희 시험에서 창 단독 캡처는 프레임 0개

처음에는 나머지 화면을 쓸 수 있도록 ScreenCaptureKit으로 Numbers 창만 녹화하려 했습니다. 저희가 본 바로는 시험 때 Numbers 창이 다른 창에 가려져 있었고(저자 관찰, 기록 파일에는 없음), 5초 요청에 스트림은 일시 중지(suspended) 상태를 한 번 알린 뒤 프레임을 0개 썼습니다. 대조로 보이는 창(Claude 앱 창)을 2초 요청하자 58개를 썼습니다. 원인은 더 조사하지 않았고, 저희 환경에서 실패한 방식이라 앞 화면 영역 캡처로 바꿨습니다.

저희 창 단독 캡처 시험 기록: Numbers 창 5초 요청에 프레임 0개, Claude 앱 창 2초 요청에 프레임 58개

지금 쓰는 방법: 키보드·마우스 입력이 10분 넘게 없고 화면이 잠기지 않았을 때만 녹화기를 돌리고, Numbers를 앞으로 가져와 찍은 뒤 이전 앱을 되돌립니다. 녹화 전 정지 화면에서 파란 표 머리글이 예상 위치를 벗어나면 멈추는 간단한 검사를 하지만, 이것만으로 글자가 다 들어갔다고 볼 수 없어 프레임을 눈으로도 봅니다.

자주 묻는 질문

스크립트가 결과를 계산하나요?

아닙니다. 입력과 화면 조작만 하고, 보이는 계산 결과는 모두 Numbers 수식에서 나옵니다.

영상을 편집하지 않고 실제 앱을 녹화하는 이유는?

실제 앱 화면이 검증하기 쉽고, 무엇을 보여 주는지 정직하게 밝히기도 쉽습니다.

AppleScript로 Numbers 확대 비율을 바꿀 수 있나요?

저희는 방법을 찾지 못해서, 기본 확대 비율에 맞게 표 배치를 줄였습니다.

참고 자료


이 글을 쓴 사람

작성·검토 방식 · 오류 제보·문의