UNPKG

@google/dscc-gen

Version:

Create component & connector projects with sane defaults.

104 lines (88 loc) 2.54 kB
const cc = DataStudioApp.createCommunityConnector(); // https://developers.google.com/datastudio/connector/reference#isadminuser const isAdminUser: IsAdminUser = () => { return false; }; // https://developers.google.com/datastudio/connector/reference#getconfig const getConfig: GetConfig = () => { const config = cc.getConfig(); config .newInfo() .setId('generalInfo') .setText( 'This is the template connector created by https://github.com/googledatastudio/dscc-gen' ); config .newSelectSingle() .setId('units') .setName('Units') .setHelpText('Metric or Imperial Units') .setAllowOverride(true) .addOption( config .newOptionBuilder() .setLabel('Metric') .setValue('metric') ) .addOption( config .newOptionBuilder() .setLabel('Imperial') .setValue('imperial') ); return config.build(); }; const getFields = (): Fields => { const fields = cc.getFields(); const types = cc.FieldType; const aggregations = cc.AggregationType; fields .newDimension() .setId('id') .setName('Id') .setType(types.TEXT); fields .newMetric() .setId('distance') .setName('Distance') .setType(types.NUMBER) .setAggregation(aggregations.SUM); return fields; }; // https://developers.google.com/datastudio/connector/reference#getschema const getSchema: GetSchema = () => { return {schema: getFields().build()}; }; // https://developers.google.com/datastudio/connector/reference#getdata const getData: GetData = (request) => { // Calling `UrlFetchApp.fetch()` makes this connector require authentication. UrlFetchApp.fetch('https://google.com'); const requestedFields = getFields().forIds( request.fields.map((field) => field.name) ); // Convert from miles to kilometers if 'metric' units were picked. let unitMultiplier = 1; if (request.configParams.units === 'metric') { unitMultiplier = 1.60934; } const rows: GetDataRows = []; for (let i = 0; i < 100; i++) { const rowValues: GetDataRowValue[] = []; requestedFields.asArray().forEach((field) => { switch (field.getId()) { case 'id': return rowValues.push('id_' + i); case 'distance': return rowValues.push(i * unitMultiplier); default: return rowValues.push(''); } }); const row: GetDataRow = {values: rowValues}; rows.push(row); } return { schema: requestedFields.build(), rows: rows, }; };