【问题标题】:Unable to read a true when using array value使用数组值时无法读取 true
【发布时间】:2022-08-17 23:14:50
【问题描述】:

更新(22 年 8 月 11 日):根据 Ruben 的请求 - 复选框使用 .insertCheckboxes() 放置在一列项目旁边。当复选框列中的任何条目调用onEdit(e) 时,会检查它们。临时复选框状态列在每个项目旁边,以确保复选框值正在更改。期望的结果是捕获哪个复选框是true,以便可以在关联的数据输入表单上编辑该项目。非工作代码是 if/else 语句的一部分。 if 工作正常,这向我表明逻辑正常:

  if (newAssetBox === true) {
    gatherAsset();
  } 

但是else 语句不起作用。正如您在下面看到的,它通过数组使用计数器来获取和列出复选框值。为了清楚起见,我从原始帖子中删除了// lines。 希望这有助于更好地理解问题。

原帖: 在这个函数中,第一个 if for newAssetBoxs() 工作得很好。 但是if (theCheckedBoxs[count] === true) 不起作用(代码块是临时的,用于故障排除)。该函数由 OnEdit() 调用。我已经尝试了很多方法并且完全感到沮丧。 您可以在下面的第二个代码块中看到,我可以将复选框的值显示为 true(这些框位于 TRUE/FALSE 和描述性文本之间)。请提供一些建议。谢谢

function checkTheBoxs() {
  assetEntryForm.getRange(\"F2\").clearContent();
  if (newAssetBox === true) {
    gatherAsset();
  } else {
    for (count = 0; count < 20; count++) {
      assetEntryForm.getRange(count + 3, 10, 1, 1).setValue(theCheckedBoxs[count]);
      if (theCheckedBoxs[count] === true) {                  
        assetEntryForm.getRange(\"F2\").setValue(\'Found a True\');
      } else {
        editAsset();

      }
    }
  }

以下块是表单页面的一部分。复选框(未显示,但在 TRUE 和 XLR 之间的表格上)是唯一选中的复选框。

FALSE   AC / Power cables   
TRUE    XLR type cable
FALSE   Multi Pair cables
FALSE   NL4 cable   
FALSE   NL8 speaker cables
FALSE   L14-30 10/4 cable
FALSE   Behringer S16 Digital Snake with 100 Foot DuraCat6 Cable

标签: javascript google-apps-script google-sheets checkbox


【解决方案1】:

theCheckedBoxs[count] === true 替换为theCheckedBoxs[count] === "TRUE"

复选框的默认选项是字符串,"TRUE""FALSE"

【讨论】:

  • 谢谢,但很久以前就试过了。你可以看到'true'在第一个实例中工作正常。该值是布尔值,而不是文本,但我确实没有高兴地尝试“TRUE”。我还发现您可以定义自己的文本值,例如“Y”、“F”,但这也不起作用。
【解决方案2】:

我终于回到了这个问题并 logger.logged theCheckedBoxs[count] 发现它实际上是一个二维数组(为什么我不确定)。我得到的是[true} 而不是true,所以我四处搜索,发现flat() 会将2D 转换为1D 和宾果游戏,现在我发现theCheckedBoxs.flat()[count] 是我的真实生活,生活又美好了……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多