我不知道如何更好地命名這個標題,所以我提前表示歉意。我想確定我希望做的事情是否可行,因為到目前為止我還不知道如何做,但如果是這樣,我想學習。我有一個相當簡單的腳本,但現在它所做的只是查看sheet2,如果D10中的復選框被選中,它就檢查D10中sheet3的復選框。這很完美,并按預期作業。我還將其設定為:如果我取消了作業表2中D10的復選框,就會取消作業表3中D10的復選框。
我希望看到的邏輯是,如果我現在取消sheet3上的D10復選框,它將取消sheet2上的D10復選框。我已經嘗試了幾種不同的方法,添加了與我這里相反的內容,但無論我怎么做,只要我取消勾選,它就會重新勾選sheet3上的方框,而sheet2上的方框從未改變。
function onEdit(e) {
var sh = SpreadsheetApp.getActiveSpreadsheet()。
var sheet2 = SpreadsheetApp. getActiveSpreadsheet().getSheetByName('sheet2')。
var sheet3 = SpreadsheetApp. getActiveSpreadsheet().getSheetByName('sheet3')。
if (sheet2.getRange('D10').isChecked()== true) {
sheet3.getRange('D10').check()。
}
else if (sheet2.getRange('D10'/span>)。 isChecked()== false){
sheet3.getRange('D10').uncheck()。
}
{}}
以上是我的原始代碼,但后來我嘗試了下面這樣的代碼,結果是一樣的。有什么想法或建議嗎?
function onEdit(e) {
var sh = SpreadsheetApp.getActiveSpreadsheet()。
var sheet2 = SpreadsheetApp. getActiveSpreadsheet().getSheetByName('sheet2')。
var sheet3 = SpreadsheetApp. getActiveSpreadsheet().getSheetByName('sheet3')。
if (sheet2.getRange('D10').isChecked()== true) {
sheet3.getRange('D10').check()。
}
if (sheet3.getRange('D10').isChecked()== false){
sheet2.getRange('D10').uncheck()。
}
else if (sheet2.getRange('D10'/span>)。 isChecked()== false){
sheet3.getRange('D10').uncheck()。
}
{}}
uj5u.com熱心網友回復:
我相信你的目標是如下的。
- 當 "D10 "的復選框被選中時,你想選中 "sheet3 "中的 "D10 "復選框,反之亦然。
- 當 "D10 "的復選框未被選中時,您想取消 "sheet3 "的 "D10 "的復選框,反之亦然。
- 你想在 "sheet2 "和 "sheet3 "上的 "D10 "復選框被選中和取消選中時運行該腳本。
在你的腳本中,例如在初始階段,當 "sheet2 "的 "D10 "已經被選中時,"sheet3 "的 "D10 "即使沒有被選中,也會被選中。我想,這可能是你的問題的原因。在這種情況下,下面的示例腳本如何呢?
示例腳本:
function onEdit(e){
const {range, source}. = e;
const sheetName = range.getSheet().getSheetName() 。
const obj = {"sheet2": "sheet3", "sheet3": "sheet2"}。
if (range.getA1Notation() == "D10" && obj[sheetName] ) {
source.getSheetByName(obj[sheetName]).getRange("D10") [range.isChecked() ? "check" : "uncheck"] ();
}
}
- 在這個示例腳本中,使用了
onEdit的事件物件 。
- 為了切換作業表的名稱,使用了JSON物件。
注:
- 如果你想使用其他作業表名稱,請修改
- 在這個示例腳本中,
getA1Notation()被用于檢查單元格坐標。當你想使用事件物件來實作這一點時,你也可以將range.getA1Notation() == "D10"修改為range.columnStart == 4 && range.rowStart == 10。
const obj = {"sheet2": "sheet3", "sheet3": "sheet2"};.
參考資料:
- 事件物件 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/330536.html
標籤:
上一篇:在SML中創建一個重復函式
