【问题标题】:Cannot convert error when assigning array to a range将数组分配给范围时无法转换错误
【发布时间】:2012-07-12 19:42:37
【问题描述】:

下面是我的代码,在代码的最后一行我收到“无法转换错误”。 澄清这一行:sheet.getRange 抛出错误。

这就是错误的全部内容;仅此而已,只是“无法转换”。另外,这是完整的代码,没有别的了。

 function days(){   
      var table = new Array(7); 

      for ( var i = 0; i < 7 ; i ++){
        table[i] = i+2;  
        }

       var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Want");
           sheet.getRange("B2:B9").setValues(table); 

        }

【问题讨论】:

  • 我更新了一点,现在好点了吗?如果有任何遗漏,请告诉我。
  • 你碰巧知道是哪一行抛出了错误吗?您正在采取哪些步骤来创建/重现错误?您采取了哪些措施来消除错误?到目前为止,什么对你有用或没用? How to Ask

标签: arrays google-apps-script runtime-error google-sheets


【解决方案1】:

我对 Google Apps 脚本一无所知,但我设法在 Google 上找到了this

看来您的表需要是一个二维数组。

也许这有帮助?

(代码来自上面的链接)

var myTable = [[1, 2, 3, 4],[5, 6, 7, 8]];
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1,1,2,4).setValues(myTable);

【讨论】:

    【解决方案2】:

    SetValues() 将二维数组作为参数,TABLE 是一维数组...这不能按原样工作...但是很容易更改,将 table 设为 7 个元素的二维数组。

    像这样:table[i] = [i+2];

    顺便说一句,范围 ('B2:B9') 是 8 个单元格高,而你只给出 7 个值...那里会有问题!

    【讨论】:

      【解决方案3】:

      我发现了这个问题的问题,所以我会回答这个问题,以便其他人可以受益。这里的问题是必须为 Range 对象的 .setValues 方法提供一个二维数组 [][]。所以我在另一个数组中创建了一个 0 维数组,这样我现在就有了一个二维数组。

      var array = new Array(7);
      
       for (var i = 0; i < 7; i++) {
          array[i] = new Array(0);
        }
      

      【讨论】:

      • 这看起来比我的例子还要好!
      • 如果您希望“其他人可能受益”,请不要保留您的代码,也不要忘记将范围大小从 8 更改为 7 ;-)
      • 范围大小是什么意思。还要澄清一下,我应该更改原始代码中的代码以使其正确吗?
      • B2:B9 高 8 个单元格,TABLE 只有 7 个元素,代码会产生错误。您确实可以在问题的编辑中添加新代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 2023-03-18
      • 2019-11-17
      相关资源
      最近更新 更多