Livio
03/28/2024, 12:25 PMNathan L
03/28/2024, 12:37 PMLivio
03/28/2024, 2:06 PMNathan L
03/28/2024, 2:25 PMLivio
03/28/2024, 2:26 PMNathan L
03/28/2024, 2:28 PMconst addSublist = ({ form, mySearch, listObj }) => {
try {
const searchColumns = mySearch?.columns;
const searchResults = mySearch?.run().getRange({ start: 0, end: 1000 });
const { list, customFields, buttons } = listObj;
// Add sublist
const sublist = form.addSublist(list);
// Add custom columns before search columns
customFields.forEach((field) => {
if (field.insert === 'before') {
addSublistColumn({ field, sublist });
}
});
// Add columns to sublist
for (let i = 0; i < searchColumns?.length; i++) {
const customDisplayTypes = ['HIDDEN', 'INLINE', 'ENTRY'];
const field = sublist.addField({
id: searchColumns[i].name,
label: searchColumns[i].label,
type: serverWidget.FieldType.TEXT
});
if (customDisplayTypes.includes(searchColumns[i].label)) {
field.updateDisplayType({
displayType: serverWidget.FieldDisplayType[searchColumns[i].label]
});
}
}
// Add custom columns after search columns
customFields.forEach((field) => {
if (field.insert === 'after') {
addSublistColumn({ field, sublist });
}
});
// Add search results to sublist
let counter = 0;
for (let i = 0; i < searchResults?.length; i++) {
if (counter > 100) {
return;
}
for (let column = 0; column < searchColumns?.length; column++) {
let value = searchResults[i].getText(searchColumns[column]);
// eslint-disable-next-line no-unused-expressions
value === null ? (value = searchResults[i].getValue(searchColumns[column])) : null;
sublist.setSublistValue({
id: searchColumns[column].name,
line: i,
value: value || null
});
}
counter++;
}
// add buttons to sublist
if (buttons.length > 0) {
buttons.forEach((button) => {
sublist.addButton(button);
});
}
} catch (e) {
log.error({ title: 'error in UTIL.addSublist', details: e });
}
};
Nathan L
03/28/2024, 2:30 PMLivio
03/28/2024, 2:31 PM