javascript - 如何将行范围合并为 json 格式?

标签 javascript json multidimensional-array google-apps-script google-sheets

我有一个像这样的谷歌表格

/image/346I8.jpg

列数和行数可能不同(不是静态的)。我希望我的 google 脚本查找最后一行和最后一列,然后运行 ​​for 循环并将每行的数据组合成这样的 json 格式。

[["1","Lee","Blue","Active"],["2","Mike","Green","Disabled"],["3","Chan","Yellow","Active"]]

我了解了 JSON.stringify() 函数,它可以帮助我将数据或每行组合成 json 格式,但我希望每行数据用逗号 (,) 分隔,不知道如何将其添加到逻辑,因为我不想在最后一行后添加逗号。

我尝试创建此代码,并需要逻辑方面的帮助,以根据列数和行数动态运行循环,而不是对任何范围进行硬编码并添加逗号。

var mysheet = SpreadsheetApp.getActive().getSheetByName('mysheet');

function combine_val() {

GetRowsCount();
var startRow = 2; // First row of data to process
var numRows = LastAudienceRow; // Number of rows to process

for (var i = 0; i < numRows; ++i) {
var dataRange = mysheet.getRange(startRow, 1, 1, 4);
var data = dataRange.getValues();
startRow = startRow+1;
var data2= JSON.stringify(data);
}

SpreadsheetApp.getUi().alert(data2); 

}



function GetRowsCount() {
LastAudienceRow = mysheet.getLastRow() - 1;
return LastAudienceRow;

}

最佳答案

你把整个情况搞得太复杂了,因为其中大部分都是自动完成的。该脚本也不是很高效,当您添加更多运行时,执行时间会太长,最终会达到应用程序脚本的最大执行时间限制。

在这里,您尝试分别从每一行获取数据,并将其添加到数组中。这是非常低效的,并且只指定您想要的数据范围会更好/更快。令人高兴的是,这也将其格式化为您喜欢的格式。

这是一个示例脚本:

var mysheet = SpreadsheetApp.getActive().getSheetByName('mysheet');

function combine_val() {
var startRow = 1; // First row of data to process.
var startColumn = 1; //First Column to process, in case that changes.

var numRows = mysheet.getLastRow(); // Number of rows to process
var numCols = mysheet.getLastColumn(); //Also the number of columns to process, again in case that changes.
var dataRange = mysheet.getRange(startRow, startColumn, numRows, numCols);//Get the full range of data in the sheet dynamically. 
var data = JSON.stringify(dataRange.getValues());//Get the value of the range, AND convert it to a JSON string in one line.

Logger.log(data); //Use the in built logger to read the values that are returned. You can read this by pressing 'ctrl+enter'. 
}

我还添加了一些示例动态改进,这意味着您将更少的值硬编码到脚本中,以防止数据发生变化时破坏脚本。

此外,我还添加了一个示例,说明如何通过内置日志记录工具读取数据,而不是在每次运行后通过繁琐的弹出窗口读取数据。

关于javascript - 如何将行范围合并为 json 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57812346/

相关文章:

javascript - polymer :铁选择器问题

c - 使用 c 的 JSON 解析器

javascript - 比较 Vanilla JS 和 JQuery

javascript - 单击按钮后启动 javascript 提示符

javascript - 在 state 和 ref 中保持相同的值是 React 中的常见做法吗?

javascript - 如何创建二维数组数组?

c++ - C++ 中带有 new 关键字的二维结构数组!

javascript - Rails 4 ajax 更新 div

javascript - 在 MOBILE ANGULAR UI 中,HTML 文本未以正确的方式从 JSON 呈现

java - 在JAVA中获取二维数组并输出一维数组