【问题标题】:Store range values by row to an array but stores only the first value - Google script [duplicate]按行将范围值存储到数组中,但仅存储第一个值 - Google 脚本 [重复]
【发布时间】:2020-09-03 07:28:04
【问题描述】:

我编写了一个脚本来存储第 1 行中要存储在值 array1 中的值范围。但是当我尝试查看数组的长度时,它会给出 1。

下面是我使用的代码:`

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var lastCol = sheet.getLastColumn();
var array1 = sheet.getRange(1,1,1,lastCol).getValues();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(2,1).setValue(array1.length);

我有来自 A1:D1 的数据为 1、2、3、4。理想情况下,我应该将 array1 的长度接收为 4,但我得到 1 作为长度值。 请帮我纠正这个问题。

理想情况下,我需要数组为 'array1 = [1,2,3,4]'

【问题讨论】:

    标签: arrays google-apps-script


    【解决方案1】:

    解释:

    • getValues() 返回Object[][],一个二维数组 值,先按行索引,然后按列。
    • 在您的代码中getValues() 用于特定的,因此它会返回一些内容 像这样:[[1.0, 2.0, 3.0, 4.0]]

    解决方案:

    替换那个:

        var array1 = sheet.getRange(1,1,1,lastCol).getValues();
    

    与:

        var array1 = sheet.getRange(1,1,1,lastCol).getValues().flat();
    
    • 这个 方法从[[]] => [] 展平数组。

    结果:

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
    var lastCol = sheet.getLastColumn();
    var array1 = sheet.getRange(1,1,1,lastCol).getValues().flat();
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(2,1).setValue(array1.length);
    

    参考资料:

    【讨论】:

    • 我尝试使用以下方法进行展平,但我无法实现。因为我需要数组是一维数组
    • @User1090 但“以下”方法不会展平数组。请坚持第一个。
    • @User1090 检查更新的答案。也许现在更清楚了。如果它对您有用,请接受答案,并考虑投票。它对社区和未来的读者都有帮助。
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2021-09-07
    相关资源
    最近更新 更多