首页 > 解决方案 > Google 表格中的井字游戏(应用程序脚本)

问题描述

我正在尝试创建一个两人井字游戏(无 AI)。我有一个显示 X 或 O 的单元格,这取决于它在单元格 J2 中的轮到。如果显示和x,则我想要一个复选框,当检查时,将其显示为X,而对于O。复选框(如果是第二个,则为第二个)。我很确定我的问题出在我的 IF 上,但我并不完全确定。

function onEdit(TTT2) {
  var ss = SpreadsheetApp.getActive();
  var Range = ss.getActiveSelection();
  var Turn = SpreadsheetApp.getrange("J2").getValue();
  if(Range = ('TRUE') && Turn == ('X')) {
    spreadsheet.getActiveSelection().setValue("X"); 
  }else if(Range = ('TRUE') && Turn == ('O')){
    spreadsheet.getActiveSelection().setValue("O"); 
  }else if(Range = (''))
    spreadsheet.getActiveSelection().setValue("TRUE");
}

编辑:发现(一个?)错误,它无法识别getrange。这就引出了一个问题:如何将单元格的值设置为变量?

标签: google-sheets-macros

解决方案


这应该会有所帮助,它将检查范围是否在前三列和前三行中,然后将值设置为 X 或 O 并更改转弯。我没有使用电子表格应用程序,而是使用了 onEdit(e) 中的 e,它为您提供了通往所选区域及其值的更直接的路径。

//Set board between a specific range. 

function onEdit(e) {
  if(e){
  var ss = SpreadsheetApp.getActive();
  var range = e.range;

  //Check that its in the begining range
  if(range.getColumn() < 4 && range.getRow() < 4) {
    //Get the turn
    var turnRange = ss.getRange("J2");
    var turn = turnRange.getValue();

    //If the checkbox is checked
    if(range.getValue() == true){
      if(turn == 'X') {
        //set the box to X and change turn to O
        range.setValue("X");
        turnRange.setValue("O");
      }else if(turn == 'O'){
        //Set box to O and change turn to X
        range.setValue("O"); 
        turnRange.setValue("X");
      }
    }
    }
   }
}

推荐阅读