0
當操作(複製/移動)包含合併單元格的範圍時,我總是收到錯誤「您的粘貼與合併單元格重疊。請取消合併單元格,然後重試「。但是,當試圖使用Range#breakApart
解除範圍內的單元格時,出現另一個錯誤:「所選單元格無法合併。」,這更令人困惑,因爲我沒有嘗試合併任何東西,我只是試圖打破細胞分開。在應用程序腳本中將Google電子表格中的表格單元格拆分(拆分)
當操作(複製/移動)包含合併單元格的範圍時,我總是收到錯誤「您的粘貼與合併單元格重疊。請取消合併單元格,然後重試「。但是,當試圖使用Range#breakApart
解除範圍內的單元格時,出現另一個錯誤:「所選單元格無法合併。」,這更令人困惑,因爲我沒有嘗試合併任何東西,我只是試圖打破細胞分開。在應用程序腳本中將Google電子表格中的表格單元格拆分(拆分)
原來breakApart
只有在它被調用的範圍包含所有合併的單元格時才起作用,而不僅僅是合併區域的一部分。
這不會太壞。一旦你意識到API沒有辦法獲得合併單元格的範圍,問題就開始了。所以最好的辦法來解決這個(我已經發現迄今)只是直到沒有發生錯誤,輕輕地延長你的範圍:
var breakRange = myRange;
for(;;) {
try {
breakRange.breakApart();
break;
} catch(e) {
breakRange = mySheet.getRange(
breakRange.getRowIndex(),
breakRange.getColumnIndex(),
Math.min(
breakRange.getHeight()+5,
mySheet.getMaxRows()-breakRange.getRowIndex()+1
),
Math.min(
breakRange.getWidth()+5,
mySheet.getMaxColumns()-breakRange.getColumnIndex()+1
)
);
}
}
(我已經添加五行/ COLS,而不是之一,因爲越來越範圍似乎是一個相當昂貴的過程)。只要沒有在擴展搜索區域時添加其他合併單元格,這種方法就可以很好地工作。
當涉及到電子表格中的合併單元格中,谷歌Apps腳本API是從根本上至少在以下幾個方面打破:
breakApart
只返回原始範圍「鏈接」)。這使得拆分合並,然後讓每個單元格包含原始合併單元格的內容是不可能的。breakApart
仍應拆開整個合併而不是拋出異常。總而言之,目前的API只適用於腳本作者自己完全控制其佈局和用法的電子表格。
聰明的想法這種嘗試/捕捉方法......以及相關的評論。 +1&thanks //注意:不應該在擴展區域時檢查最大列和最大行參數嗎? – 2013-03-15 21:09:14
@Sergeinsas謝謝,我更新了我的文章以包含您的建議。 – 2013-03-16 13:37:52