appendDataListExec()

in src/connectors/sheets-connector.js [316:349]


  appendDataListExec(tabId, items, rowIndexFunc) {
    if (!items || items.length === 0) return;

    let tabConfig = this.tabs[tabId];
    let propertyLookup = this.getPropertyLookup(tabId);
    let firstRowIndex, allValues = [];
    let rowIndex = tabConfig.skipRows + 1;

    items.forEach(item => {
      let values = [];
      propertyLookup.forEach(lookup => {
        if (typeof lookup !== 'string') {
          throw new Error(
            `${tabId} Tab: Property lookup ${lookup} is not a string`);
        }
        try {
          let value = lookup ? eval(`item.${lookup}`) : '';
          values.push(value);
        } catch (error) {
          values.push('');
        }
      });

      if (!firstRowIndex) {
        firstRowIndex = rowIndexFunc ? rowIndexFunc(item, rowIndex) : rowIndex;
      }
      allValues.push(values);
      rowIndex++;
    });

    // Update in batch.
    let range = this.getRowRange(tabId, firstRowIndex, items.length);
    range.setValues(allValues);
  }