"[Ljava.lang.Object;@"的意思是什么?

7

我正在通过表格向Google电子表格填写数据。该代码将一些信息写入电子表格,它总是做得正确,但在写入它应该写入的内容之前,它会在电子表格的最后一行上写入[Ljava.lang.Object;@1c7aa4fc(或类似的内容)。那是为什么?

写入电子表格的代码:

for (var p = 1; p < data.length; p++) {
    var ppopis = data[p][2]; 
    var sstav = data[p][7];
    var ukonceno_dne = data[p][9];
    var cell = spred2.getRange("H"+(p+1));
    var celll = spred2.getRange("J"+(p+1));
    if(nadpis_pole == ppopis && vlozena_hodnota == "Zrušeno") {
      cell.clear();
      cell.setValue("Zrušeno");
      if(ukonceno_dne == "" || ukonceno_dne == null){
        celll.setValue(dnesni_datum);
      }
    } else if (nadpis_pole == ppopis && vlozena_hodnota == "Vráceno") {
      cell.clear();
      cell.setValue("Vráceno");
      if(ukonceno_dne == "" || ukonceno_dne == null){
        celll.setValue(dnesni_datum);
      }
    }
  }

感谢您使用我们的服务 :)

[Ljava.lang.Object;@.... 是Java类的开始;dnesdi_datum 是否从Java程序中获取其内容? - S.L. Barth
dnesni_datum表示今天的日期,它在代码中先生成。 - Louskac
在setValue之前记录所有内容,以便我们可以看到它们。 - Zig Mandel
你应该能够直接将JavaScript的Date写入表格 - 展示如何创建dnesni_datum - tehhowch
2个回答

8

App Script的基础数据结构建立在Java上...... Ljava.lang.....在GAS中表示Java中的对象符号,表示任何对象,如Array、JSON。要获取实际值,请尝试toString()(或)JSON.Stringify()并检查是否存在该值。


1
谢谢你的回答,尽管它没有帮助到我 :/ 我不知道,可能问题必须在其他地方。 - Louskac

5

在进行赋值操作时要小心,你可能会错误地传递一个数组(或对象类型),而你实际上想要插入一个字符串。

例如:

        ...
        aSheet.appendRow([["hello world"]]);

将"Java.Lang.Object"追加到追加行的第一个单元格。

正确的API如下:

        ...
        aSheet.appendRow(["hello world"]); // single array

这对我解决了问题。如果你通常使用Range.setValues(values)将数据写入表格,那么这是一个容易犯的错误,因为它期望[["hello world"]] - zimady
我仍然得到相同的结果,使用这两个示例。 - Amit Sharma
非常感谢,问题出在我这边。我的代码中对于appendRow和setValues方法都使用了2D数组,但是对于appendRow来说这是错误的,因为它只会添加1行,所以只需要一个1D数组即可。 - Vincent Tallon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接