Я хочу иметь возможность вставлять столбцы в мои данные или переставлять позиции столбцов, не затрагивая функции приложения.
Вместо того, чтобы ссылаться на позиции столбцов по номерам, я подумал о том, чтобы ссылаться на них по значениям заголовков (I не будет изменять имена).
Я сделал небольшую функцию, которая облегчит написание кода.
Вывод функции будет сохранен на листе, а затем я скопирую вставьте его в функцию скрипта моего приложения.
С моим подходом все в порядке или есть лучший способ сделать это?
function get_headers(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheets=ss.getSheets();
var fin=[];
var tsheet=ss.getSheetByName("Product");
var shtname=tsheet.getName();
var [hd_Product, ...data_Product] = tsheet.getDataRange().getDisplayValues();
for (j=0;j<hd_Product.length;j++) { fin.push("const "+shtname+"_"+hd_Product[j]+"=hd_product.indexOf('"+hd_Product[j]+ "');") };
Browser.msgBox(fin);
//tsheet.getRange(tsheet.getLastRow(), 1, fin.length, fin[0].length).setValues(fin);
The below code - for running it for all the shets is not woeking.
for (i=0;i<sheets.length;i++){
var shtname=sheets[i].getName();
var tsheet=ss.getSheetByName(shtname);
var [header, ...data] = tsheet.getDataRange().getDisplayValues();
for (j=0;j<header.length;j++) {
fin.push("const "+shtname+"_"+header[j]+"=header.indexOf('"+header[j]+ "');") ;
}//for j
Browser.msgBox(fin);
}//for i
//Browser.msgBox(fin);
}
//
//
function process(){
const Product_Code=hd_product.indexOf('Code');
const Product_Item=hd_product.indexOf('Item');
const Product_UOM=hd_product.indexOf('UOM');
const Product_CAT=hd_product.indexOf('CAT');
const Product_Price=hd_product.indexOf('Price');
const Product_Min_Stock=hd_product.indexOf('Min_Stock');
const Product_Lot=hd_product.indexOf('Lot');
const Product_Now_Stock=hd_product.indexOf('Now_Stock');
const Product_Upd_Date=hd_product.indexOf('Upd_Date');
const Product_Vendor1=hd_product.indexOf('Vendor1');
const Product_Vendor2=hd_product.indexOf('Vendor2');
const Product_Vendor3=hd_product.indexOf('Vendor3');
}