Problem
表格 cell 內的個別段落沒有任何定址能力。 寫入 cell 只有兩條路,各自有無法迴避的限制:
| 工具 |
語意 |
對多段落 cell 的後果 |
update_cell |
整格覆寫 |
把 N 個獨立段落壓成單一段落+換行,段落級屬性(pPr:縮排、間距、對齊、樣式)一併失去 |
replace_text |
replace-all(v2.1 起 all 參數移除、恆為全域) |
定位字串若不唯一,會連同其他列一起改掉 |
而段落級工具明文排除表格:
get_paragraphs 說明:「回傳順序是 get_paragraphs readback index:top-level paragraphs + block-level SDT 內段落;不含 table-cell paragraphs」
update_paragraph 說明:「index:top-level paragraph ordinal(從 0 開始;只計直接位於 body.children 的 .paragraph,不計 tables / block-level SDTs)」
交集的結果是一類無安全路徑的格子:定位字串不唯一、且該格含多個段落。
Reproduction
一份官方表單的檢核欄(單一 cell,含 4 個獨立段落):
同一份文件裡 □(1) 在三個不同列各出現一次(search_text 實測 3 命中)。要只勾這一格的 (1):
replace_text(find: "□(1)") → 三列全被勾(replace-all)
update_cell(row, col, text: "V(1)\nV(2)\nV(3)\n□無報酬") → 寫入成功,但四個段落塌成一個
塌陷的機械證據(search_text 回報的 position 是段落內偏移):
|
該格殘存 □ 的位置 |
| 填寫前 |
position 0(各自段落開頭,4 個段落各一) |
| 填寫後 |
position 15("V(1)\nV(2)\nV(3)\n" = 15 字元 → 全部併入同一段落) |
Expected
能定址並只改寫「某個 cell 內的第 k 個段落」,其餘段落與各自的 pPr 原樣不動。例如:
update_cell_paragraph(doc_id, table_index, row, col, para_index, text)
或讓 replace_text 支援 cell/段落範圍限定(例如 scope: {table, row, col} 或 first_only/occurrence: n),使不唯一的定位字串仍可精確定點。
Actual
無此能力。多段落 cell 只能整格覆寫或全域取代,兩者都會造成非預期改動。
Impact
下游 ntu-claude-plugins 的 rec-fill(官方送審表單代填)因此把這類格子整批標為「不自動填、留人工」。實測四份表單中有兩份(各含 3–9 個此類格子)落在這個桶。
相關
Problem
表格 cell 內的個別段落沒有任何定址能力。 寫入 cell 只有兩條路,各自有無法迴避的限制:
update_cellpPr:縮排、間距、對齊、樣式)一併失去replace_textall參數移除、恆為全域)而段落級工具明文排除表格:
get_paragraphs說明:「回傳順序是 get_paragraphs readback index:top-level paragraphs + block-level SDT 內段落;不含 table-cell paragraphs」update_paragraph說明:「index:top-level paragraph ordinal(從 0 開始;只計直接位於 body.children 的.paragraph,不計 tables / block-level SDTs)」交集的結果是一類無安全路徑的格子:定位字串不唯一、且該格含多個段落。
Reproduction
一份官方表單的檢核欄(單一 cell,含 4 個獨立段落):
同一份文件裡
□(1)在三個不同列各出現一次(search_text實測 3 命中)。要只勾這一格的(1):replace_text(find: "□(1)")→ 三列全被勾(replace-all)update_cell(row, col, text: "V(1)\nV(2)\nV(3)\n□無報酬")→ 寫入成功,但四個段落塌成一個塌陷的機械證據(
search_text回報的position是段落內偏移):□的位置position 0(各自段落開頭,4 個段落各一)position 15("V(1)\nV(2)\nV(3)\n"= 15 字元 → 全部併入同一段落)Expected
能定址並只改寫「某個 cell 內的第 k 個段落」,其餘段落與各自的
pPr原樣不動。例如:或讓
replace_text支援 cell/段落範圍限定(例如scope: {table, row, col}或first_only/occurrence: n),使不唯一的定位字串仍可精確定點。Actual
無此能力。多段落 cell 只能整格覆寫或全域取代,兩者都會造成非預期改動。
Impact
下游
ntu-claude-plugins的rec-fill(官方送審表單代填)因此把這類格子整批標為「不自動填、留人工」。實測四份表單中有兩份(各含 3–9 個此類格子)落在這個桶。相關