【问题标题】:Google sheets app script - taking horizontal data and setting it vertically谷歌表格应用脚本 - 获取水平数据并垂直设置
【发布时间】:2018-11-14 15:05:59
【问题描述】:

我正在尝试使用谷歌脚本函数 getValues 从谷歌表格应用程序中获取水平排列在单行中的数据序列,然后将它们放入垂直排列在单列中的不同表格中。我的代码目前如下所示:

function tester() {
  var app = SpreadsheetApp;
  var loader = app.getActiveSpreadsheet().getSheetByName('Loader');
  var stats = app.getActiveSpreadsheet().getSheetByName('Stats');
  var list = app.getActiveSpreadsheet().getSheetByName('List');  

  var xpos = 19;
  var ypos = 2;

  var abilityBlock = list.getRange(ypos,xpos,1,16).getValues();

  Logger.log(abilityBlock);

  //loader.getRange(10,5,16,1).setValues(abilityBlock);

  }

我将 setValues 部分注释掉,因为它返回一个错误,说它预期数据为 16 宽,而它所抓取的数据为 16 高。

据我所知,罪魁祸首是数据是如何被拉入数组的。 Logger 将数据显示为 [[value1,value2,value3,value4,etc..]] 而不是 [[value1],[value2],[value3],[value4],[etc...]]

我想避免使用 for 循环一次推入一个数据,是否有另一种方法来转换数组中的数据?或者另一种使用 getValues 操作以我可以实际使用的格式获取它的方法?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    我认为您想使用转置功能。

    试试这个

    list.getRange(ypos,xpos,1,16).copyTo(loader.getRange(10,5), 
                         spreadsheetApp.CopyPasteType.PASTE_VALUES, true);
    

    此处说明:https://developers.google.com/apps-script/reference/spreadsheet/range#copyTo(Range,CopyPasteType,Boolean)

    【讨论】:

    • 谢谢。我不得不稍微解决这个问题,但它可以正常工作。出于某种原因,我的工作表在定义 CopyPasteType 的参数时不喜欢使用“spreadsheetApp”,但我使用了之前定义的 app 变量,它就像一个魅力。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 2017-07-20
    • 2015-07-31
    相关资源
    最近更新 更多