anyone have any scripts that push a saved search t...
# suitescript
m
anyone have any scripts that push a saved search to a google sheet, or file in google drive?
j
Copy code
/**
 * @NApiVersion 2.x
 * @NScriptType ScheduledScript
 * @Author Jack Arens | National Food Group
 */
define(
    [ 'N/https','N/search'],
    function(https,search) {
        var exports = {
            execute: execute
        };
        function execute(scriptContext) {
            var mySearch = search.load({id: '7233'});
            var data = [];
            var resultIndex = 0;
            var resultStep = 1000;
            var resultSet;
            resultSet = mySearch.run();
            try {
                resultSet = mySearch.run();
                var headers = [];
                for (i = 0; i < resultSet.columns.length; i++) {
                    headers.push(resultSet.columns[i].label);
                }
                data.push(headers);
                do{
                    resultSet = mySearch.run();
                    var firstResult = resultSet.getRange({
                        start : resultIndex,
                        end : resultIndex + resultStep
                    });
                    for(var i = 0; i < firstResult.length; i++){
                        var row = [];
                        for(var j = 0; j < resultSet.columns.length; j++){
                                var myCell = firstResult[i].getValue({
                                    name: resultSet.columns[j]
                                });
                                if(myCell == '- None -'){
                                    myCell = '';
                                }
                                row.push(myCell);
                        }
                        data.push(row);
                    }
                    resultIndex = resultIndex + resultStep;
                }  while(firstResult.length > 0);
            }catch(e){}//empty catch
            try{
                var tokenData = {
                    'client_id': '***************',
                    'client_secret': '***************',
                    'refresh_token': '***************',
                    'grant_type': 'refresh_token'};
                var token = <http://https.post|https.post>({
                    url: '<https://www.googleapis.com/oauth2/v4/token>',
                    body: JSON.stringify(tokenData)
                });
                var data = {
                    "valueInputOption": "USER_ENTERED",
                    "data": [
                        {
                            "range": "Sheet1!A2:Z1000",
                            "majorDimension": "ROWS",
                            "values": data
                        }
                    ]
                };
                var response = <http://https.post|https.post>({
                    url: '<https://content-sheets.googleapis.com/v4/spreadsheets/***************/values:batchUpdate?alt=json&key=***************>',
                    headers: {"Authorization": "Bearer " + JSON.parse(token.body).access_token},
                    body: JSON.stringify(data)
                });
                log.debug('Reponse',response)
            }catch(e){log.debug('Catch Happened','Trouble in Paradise')}
        }
        return exports;
    });
j
Nice example @jarens. I've done the Google drive upload of csv and pdf files from NetSuite but never considered a POST right to the sheets API
m
This is awesome! Thank you @jarens