如何在 VBA(无需迭代)中直接设置一个 JSON 数组,该数组是从谷歌表格范围内的网络应用程序中检索的?



如何更改代码,以便可以根据条件检索谷歌工作表范围中的数组中的数据;如果第一列日期值不相同,则覆盖所有数据,但如果相同,则不相同。

function getJsonData(){

var spreadSheetId='YOUR_SPREADSHEET_ID';

var ss = SpreadsheetApp.openById(spreadSheetId);
var sheet = ss.getSheetByName("Validation_sheet");

var json_data = getData(sheet);
return json_data;
function getData(sheet){

var jo = {};
var i =0;
var rows2 = sheet.getDataRange().getValues();
Logger.clear();
//  ===============Get data=================
var rows2=[];
var rangeData = sheet.getDataRange();
var values = rangeData.getValues();
var lastColumn = rangeData.getLastColumn();
var lastRow = rangeData.getLastRow();
// Logger.log("lastrow=>"+ lastRow);
var data=[];
var x=0,y=0;
for(i = 0; i<lastRow; i++){
data[x]=[];

for(var j=0; j<lastColumn; j++ ){ 

if(email == values[i][2]){

data[x][j]= values[i][j];
y=1;
}
}
if(y==1){ x=x+1; y=0; }

}
return data;  
}

我还包括通过网络应用程序、从谷歌表单检索数据的vba代码

Sub Retrieve()
Dim myurl As String 'for store URL from google
Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.6.0") 'To use POST http Request
Data = "{""dataReq"":[], " & vbNewLine & "  ""fname"":""getData""}"
'Define the google URL
myurl = "https://script.google.com/macros/s/AKfycbyQbRuYXTvVheZQIC6Gmaj0DMkbMnBVh8JLQS_q8QUPOMIB_t0/exec"
xmlhttp.Open "POST", myurl, False
xmlhttp.send Data
sGetResult = xmlhttp.ResponseText
Set JsonObject = JsonConverter.ParseJson(sGetResult)
Row = 0
For Each dataRow In JsonObject
Row = Row + 1
Column = 0
For Each dataCell In dataRow
Column = Column + 1
Cells(Row, Column) = dataCell
Next
Next

End Sub

但是上面的vba代码只能检索值​​逐行,如何直接通过数组而不是逐行完成,如何使用数组而不是范围?

在我看来,你正试图完成这样的事情,但我不明白标准是什么,我也不能真正遵循你的大部分代码。

function getJsonData() {
const ss = SpreadsheetApp.openById("spreadSheetId");
const sh = ss.getSheetByName("Validation_sheet");
const vs = sh.getDataRange().getValues().filter(r => r[0] == "some criteria").filter(r => r != 'undefined');
return JSON.stringify(vs);
}

最新更新