Я хочу передать объект в веб-приложение Google Sheet, которое я написал, и добавить эти данные в Google Sheet. Я хочу убедиться, что данные попадают в правильные столбцы.
Я могу добавить данные в файл, но это может вызвать проблемы, если столбцы добавляются / изменяются и т. Д.
У меня естьсозданы метаданные столбца для каждого столбца, который соответствует ключу объекта.
Я могу прочитать метаданные столбца и найти, какой номер столбца представляет каждый из них. то есть. если я получаю метаданные для "orderNumber", я вижу, что он находится в строке 1.
Код для веб-приложения.
function doGet(e) {
var p = e.parameter;
var sheetName = "Orders";
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var appendList = JSON.parse(p.appendList)[0];
var returnValue = {};
returnValue["status"] ="error";
//var appendRow = sheet.getLastRow()+1;
var values = []
for (var key in appendList) {
values.push(appendList[key]);
Logger.log(searchAndReturnCol(key+"Column")); // just to show I can get the column number from meta data
}
sheet.appendRow(values);
return ContentService.createTextOutput(JSON.stringify(returnValue));
}
function testDoGet() { // emmulates what will past over by the app
var e = [];
var test = [{
'orderNumber' : "vsdv",
'name' : "Bob",
'porkDumpling' : 0,
'prawnDumpling' : 0,
'vegetarianDumpling' : 0,
'sauce' : "Spicey",
'paymentMethod' : "Cash",
'dollarReceivable' : 5,
'dollarReceived' :5,
'collectionDate' : 44234244,
'packed' : "No",
'collected' : "No",
'comments' : "This is a comment"
}]
var mod = JSON.stringify (test)
e.parameter = {
'appendList':mod,
}
doGet(e)
//displayLog (doGet(e));
}
Код для поиска метаданных
function searchAndReturnCol (key){
var colLevel = cSAM.SAM.searchByKey (SSID , key);
return colLevel.matchedDeveloperMetadata[0].developerMetadata.location.dimensionRange.endIndex
}
В чем я не уверен, так это в том, как объединить две идеи. Я хочу проверить ключ в объекте, а затем убедиться, что эти данные вставлены в правильный столбец на основе метаданных столбца.