0

我试图让我的脚本不超过最大执行时间,但我不确定如何优化我的代码。真正挂起的部分是文件是 APR 时。它必须解压缩 69 个文件,将它们转换为 Google 文档格式,然后覆盖 Google Sheet 上的现有标签。谢谢!

//version 1_20200306

function doGet(e) {
  try {
    var rn = e.parameter.responseNumber;  // takes the response number as a parameter
    rn = Number(rn);  // sets the response number into a variable
    rn = rn + 1;  // increments the response number by 1 to designate the row number

    // begins processing the report form entry
    var reportStatus = processReportForm(rn);

    // if a good status is returned then the script redirects to the success page
    if (reportStatus == "good") {
      var output = HtmlService.createHtmlOutputFromFile(reportStatus);
      return output;
    }

  }
  catch(err) {
    var output = HtmlService.createHtmlOutputFromFile('failure');
    return output;
  }
};

// gets the most recent file added to the folder
function getLatestFileId(recentFileFolder){

  var folder = DriveApp.getFoldersByName(recentFileFolder);
  var files = folder.next().getFiles();
  var lastFileId = files.next().getId();

  return lastFileId.toString();

};

// checks to see if demo report code is present
function demoCheckReportCode(rcCheck,rType) {

  if(rcCheck == 'demo' && rType == 'APR') {
    var rcDemoCheckName = '1vH4SidDb6QctTdBtvIUxjpE3RRmZPMo8_fQcNUJqWV0';
  } else if (rcCheck == "demo" && rType == 'SysPM') {
    var rcDemoCheckName = '1D2QJkM0odQBQia9Q2qHGwC_iKHidfvfbQv1xDR6yygk';
  } else if (rcCheck == "demo" && rType == 'SysPM Resubmitted') {
    var rcDemoCheckName = '1D2QJkM0odQBQia9Q2qHGwC_iKHidfvfbQv1xDR6yygk';
  }else if (rcCheck == "demo" && rType == 'CSV') {
    var rcDemoCheckName = '1Wqi6qykTMlMCaoDF1JfE1bOk0H_SykydtCnC2jFoTgI';
  } else {
    var rcDemoCheckName = rcCheck;
  }
  return rcDemoCheckName;
};

// checks to see if report code is demo and returns the folder ID to use
function demoCheckFolderId(fIdCheck) {

  if (fIdCheck == '1vH4SidDb6QctTdBtvIUxjpE3RRmZPMo8_fQcNUJqWV0' ||
      fIdCheck == '1D2QJkM0odQBQia9Q2qHGwC_iKHidfvfbQv1xDR6yygk' ||
      fIdCheck == '1Wqi6qykTMlMCaoDF1JfE1bOk0H_SykydtCnC2jFoTgI') {
    var rcDemoCheckId = '1b-1Ll2O1ZsDztzwoGUnNiPbAVq5-bHXa';
  } else {
    var rcDemoCheckId = getFolderByName(fIdCheck);
  }
  return rcDemoCheckId;
};

function processReportForm(rNumber) {

  var rsId = '11NR47rtjTtdYDK7ZmXDZ38VCC9xRBsiwrixNXfqbjOk'; // ID of Report Submission Form
  var rs = SpreadsheetApp.openById(rsId)
  var sheet = rs.getSheets()[0];
  var rowNumber = rNumber;
  var contactName = sheet.getRange('E' + rowNumber).getValue();
  var reportFileName = sheet.getRange('F' + rowNumber).getValue();
  var dashboardName = sheet.getRange('G' + rowNumber).getValue();
  var reportCode = sheet.getRange('H' + rowNumber).getValue();
  var emailAddress = sheet.getRange('I' + rowNumber).getValue();
  var info = sheet.getRange('M' + rowNumber).getValue();
  var type = sheet.getRange('K' + rowNumber).getValue();
  var period = sheet.getRange('L' + rowNumber).getValue();
  var dataSheetName = 'DATA';

  // checks to see if demo report is being used
  reportCode = demoCheckReportCode(reportCode,type);

  // checks to see if folder has files in it
  var etlStatus = checkFolder(reportCode);

  // returns status of etl
  if (etlStatus == reportCode) {
    return etlStatus;
  }

  // takes input form info and adds it to data sheet
  var ds = SpreadsheetApp.openById(reportCode)
  var dataSheet = ds.getSheets()[0];

  if(type == 'SysPM') {
    dataSheet.getRange('B8').setValue('NO');
  } else if(type == 'SysPM Resubmitted') {
    dataSheet.getRange('B8').setValue('YES');
  }

  // processes uploaded data
  importData(type,reportCode,reportFileName,dataSheetName);

  dataSheet.getRange('B2').setValue(dashboardName);
  dataSheet.getRange('B3').setValue(period);
  dataSheet.getRange('B4').setValue(info);

  // returns etl status
  return etlStatus;
};

function importData(tc,rc,rfn,dsn) {

  // demo report check folder ID
  var folderId = demoCheckFolderId(rc);

  var spreadsheet = rc; // spreadsheet where data goes
  var reportName = rfn; // report file name

  // checks report type
  if(tc == 'APR') {

    // unzip report with csv files and delete report file
    unZipItAPR(folderId,reportName);

    var vFolder = DriveApp.getFolderById(folderId); // gets folder ID
    var vFiles = vFolder.getFiles(); // populates with a list of files in the folder

    // gets the names of the files in the folder
    while (vFiles.hasNext()) {
      var file = vFiles.next();
      var csvName = file.getName();
      if (csvName != 'Q4a.csv' 
      && csvName != 'Q6e.csv'
      && csvName != 'Q6f.csv'
      && csvName != 'Q7b.csv'
      && csvName != 'Q8b.csv'
      && csvName != 'Q9a.csv'
      && csvName != 'Q9b.csv') {

        // imports csv files into spreadsheet
        importFile(file.getName(),folderId,spreadsheet);
      }
    }

    // converts csv files to Google Sheets format
    convert(folderId);

    var csvFiles = vFolder.getFiles();
      // copies files into data folder
      while (csvFiles.hasNext()) {
        var file = csvFiles.next();
        var Q5aSheetName = file.getName();

        var csvSheet = SpreadsheetApp.openById(file.getId());
        var Q5aSheet = csvSheet.getSheets()[0];
        var testValue1 = Q5aSheet.getRange('A1').getValue();
        var testValue2 = Q5aSheet.getRange('B1').getValue();

        if (testValue1 == '' && testValue2 == '') {
          Q5aSheet.deleteRow(1);
        }

        // clones the report sheets to the data sheet
        cloneGoogleSheet(file.getId(),spreadsheet,Q5aSheetName,Q5aSheetName);
      }

    // checks report type
  } else if(tc == 'SysPM' || tc == 'SysPM Resubmitted') {

    // converts xls to google sheets format
    var sourceFileId = convertExceltoGoogleSpreadsheet(folderId,reportName);
    if(tc == 'SysPM') {
      var sourceSheetNameOne = 'SysPMSummary2016_1';
      var destSheetNameOne = 'SysPMSummary2016_1';
    } else if(tc == 'SysPM Resubmitted') {
      var sourceSheetNameOne = 'SysPMSummary2016Rev';
      var destSheetNameOne = 'SysPMSummary2016Rev';
    }
    var sourceSheetNameTwo = 'SysPMSummary';
    var destSheetNameTwo = 'SysPMSummary';

    // clones the report sheets to the data sheet
    cloneGoogleSheet(sourceFileId,spreadsheet,sourceSheetNameOne,destSheetNameOne);
    cloneGoogleSheet(sourceFileId,spreadsheet,sourceSheetNameTwo,destSheetNameTwo);
  } else if(tc == 'CSV') {

    // unzip report with csv files and delete report file
    unZipItCSV(folderId,reportName);

    // converts csv files to Google Sheets format
    convert(folderId);

    var vFolder = DriveApp.getFolderById(folderId); // gets folder ID
    var vFiles = vFolder.getFiles(); // populates with a list of files in the folder
    var thisFile = DriveApp.getFileById(rc);

    var parentFold = thisFile.getParents(); // Get all parents - normally just one parent
    var targetFolder = parentFold.next(); // Get the first parent folder
    var targetFolderFiles = targetFolder.getFiles(); // populates with a list of files in the folder
    var dateFile = DriveApp.getFileById('1jj97O7RxPQzV3kpqUlYwI5HIQS6BcSsV-w0HAiJUTio'); //Master Dates file id

    // makes a copy of the Master Dates file into the upload folder
    dateFile.makeCopy(vFolder).setName(dateFile.getName());

    // copies files into data folder
    while (vFiles.hasNext()) {
      var file = vFiles.next();
      if (file.getName() == 'Client'||
          file.getName() == 'Enrollment'||
          file.getName() == 'Exit'||
          file.getName() == 'HealthAndDV'||
          file.getName() == 'Master Dates'||
          file.getName() == 'Project') {

          // removes unnecessary columns
          deleteColumns(file.getId(),file.getName());

          // gets current file/sheet name
          var sheetName = file.getName();

          // clones the report sheets to the data sheet
          cloneGoogleSheet(file.getId(),spreadsheet,sheetName,sheetName);
      }
    }
  }
};

// unzips APR zip file
function unZipItAPR(fo,na) {
  var theFolder = DriveApp.getFolderById(fo); // folder with zipped report
  var theFile = theFolder.getFilesByName(na); // gets the contents of the zip file
  var fileBlob = theFile.next().getBlob(); // stores the files for processing
  fileBlob.setContentType("application/zip"); //sets the correct file type for the zip file
  var unZippedFiles = Utilities.unzip(fileBlob);

  // unzips the files into the folder
  for (var i in unZippedFiles) {
  if (unZippedFiles[i].getName() != 'Q4a.csv' 
      && unZippedFiles[i].getName() != 'Q6e.csv'
      && unZippedFiles[i].getName() != 'Q6f.csv'
      && unZippedFiles[i].getName() != 'Q7b.csv'
      && unZippedFiles[i].getName() != 'Q8b.csv'
      && unZippedFiles[i].getName() != 'Q9a.csv'
      && unZippedFiles[i].getName() != 'Q9b.csv') {
    var newDriveFile = DriveApp.createFile(unZippedFiles[i]);
    var zipFile = newDriveFile.getId();
    theFolder.addFile(DriveApp.getFileById(zipFile));
    DriveApp.removeFile(DriveApp.getFileById(zipFile));
    }
  }
  // removes file after it has been unzipped
  DriveApp.getFilesByName(na).next().setTrashed(true);
};

// unzips CSV zip file
function unZipItCSV(fo,na) {
  var theFolder = DriveApp.getFolderById(fo); // folder with zipped report
  var theFile = theFolder.getFilesByName(na); // gets the contents of the zip file
  var fileBlob = theFile.next().getBlob(); // stores the files for processing
  fileBlob.setContentType("application/zip"); // sets the correct file type for the zip file
  var unZippedFiles = Utilities.unzip(fileBlob);

  // unzips the files into the folder
  for (var i in unZippedFiles) {
  var csvZipName = unZippedFiles[i].getName();
  if (csvZipName == 'Client.csv'
      || csvZipName == 'Enrollment.csv'
      || csvZipName == 'Exit.csv'
      || csvZipName == 'HealthAndDV.csv'
      || csvZipName == 'Project.csv') {
    var newDriveFile = DriveApp.createFile(unZippedFiles[i]);
    var zipFile = newDriveFile.getId();
    theFolder.addFile(DriveApp.getFileById(zipFile));
    DriveApp.removeFile(DriveApp.getFileById(zipFile));
    }
  }
  // removes file after it has been unzipped
  DriveApp.getFilesByName(na).next().setTrashed(true);
};

// imports files into data spreadsheet
function importFile(fiName,foId,spId) {
  var fSource = DriveApp.getFolderById(foId); // folder where csv files are saved
  var fi = fSource.getFilesByName(fiName); // latest report file
  var ss = SpreadsheetApp.openById(spId); // data_sheet_id = id of spreadsheet that holds the data to be updated with new report data

  if ( fi.hasNext() ) { // proceed if csv file exists in the folder
    var file = fi.next();
    var csv = file.getBlob().getDataAsString();
    var csvData = CSVToArray(csv); // see below for CSVToArray function

    // removes the extension from file name
    var fiNameShort = fiName.split('.').slice(0, -1).join('.');

    var sheet = ss.getSheetByName(fiNameShort);

    // loop through csv data array and insert (append) as rows into 'DATA' sheet
    for ( var i=0, lenCsv=csvData.length; i<lenCsv; i++ ) {
      sheet.getRange(i+1, 1, 1, csvData[i].length).setValues(new Array(csvData[i]));
    }

    // trashes the csv file
    Drive.Files.remove(file.getId());
  }
};

// http://www.bennadel.com/blog/1504-Ask-Ben-Parsing-CSV-Strings-With-Javascript-Exec-Regular-Expression-Command.htm
// This will parse a delimited string into an array of
// arrays. The default delimiter is the comma, but this
// can be overriden in the second argument.

function CSVToArray( strData, strDelimiter ) {
  // check to see if the delimiter is defined. If not,
  // then default to COMMA.
  strDelimiter = (strDelimiter || ",");

  // create a regular expression to parse the CSV values.
  var objPattern = new RegExp(
    (
      // delimiters.
      "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +

      // quoted fields.
      "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +

      // standard fields.
      "([^\"\\" + strDelimiter + "\\r\\n]*))"
    ),
    "gi"
  );

  // create an array to hold our data. Give the array
  // a default empty first row.
  var arrData = [[]];

  // create an array to hold our individual pattern
  // matching groups.
  var arrMatches = null;

  // keep looping over the regular expression matches
  // until we can no longer find a match.
  while (arrMatches = objPattern.exec( strData )){

    // get the delimiter that was found.
    var strMatchedDelimiter = arrMatches[ 1 ];

    // check to see if the given delimiter has a length
    // (is not the start of string) and if it matches
    // field delimiter. If id does not, then we know
    // that this delimiter is a row delimiter.
    if (
      strMatchedDelimiter.length &&
      (strMatchedDelimiter != strDelimiter)
    ){

      // since we have reached a new row of data,
      // add an empty row to our data array.
      arrData.push( [] );

    }

    // now that we have our delimiter out of the way,
    // let's check to see which kind of value we
    // captured (quoted or unquoted).
    if (arrMatches[ 2 ]){

      // we found a quoted value. When we capture
      // this value, unescape any double quotes.
      var strMatchedValue = arrMatches[ 2 ].replace(
        new RegExp( "\"\"", "g" ),
        "\""
      );

    } else {

      // we found a non-quoted value.
      var strMatchedValue = arrMatches[ 3 ];

    }

    // now that we have our value string, let's add
    // it to the data array.
    arrData[ arrData.length - 1 ].push( strMatchedValue );
  }

  // return the parsed data.
  return( arrData );
};

// function that returns folder ID based on folder name
function getFolderByName(folderName) {
  var folders = DriveApp.getFoldersByName(folderName);
  var folderID = null;
  if (folders.hasNext()) {
    folderID = folders.next().getId();
    }
  return folderID;
};

// checks the status of the folder to make sure there aren't any files already in it
function checkFolder(cc) {
  var ccStatus = cc;

  // checks if demo report is being used
  var cFolderId = demoCheckFolderId(ccStatus);

  var cFolder = DriveApp.getFolderById(cFolderId);
  var recentFileId = getLatestFileId(cFolder);
  var cFiles = cFolder.getFiles();

  // cleans up any previously leftover files leaving the current report file alone
  while (cFiles.hasNext()) {
    var file = cFiles.next();
    if (file.getId() != recentFileId) {
      Drive.Files.remove(file.getId());
    }
  }

  ccStatus = 'good';
  return ccStatus;
};

// converts xls file to google sheet
function convertExceltoGoogleSpreadsheet(foId,fiNa) {

  fiNa = fiNa || "microsoft-excel.xls";

  var folderId = foId;
  var convertFolder = DriveApp.getFolderById(folderId);
  var excelFile = convertFolder.getFiles().next();
  var fileId = excelFile.getId();
  var blob = excelFile.getBlob();
  var resource = {
    title: excelFile.getName().replace(/.xls?/, ""),
    parents: [{ id: folderId }],
    key: fileId
  };
  var createFile = Drive.Files.insert(resource, blob, {
    convert: true
  });
  Drive.Files.remove(excelFile.getId());
  return createFile.id;

};

// copy data from Google Sheet A to Google Sheet B
// Credit: @chrislkeller

function cloneGoogleSheet(ssA,ssB,ssName,sdName) {

  // source doc
  var ssDoc = SpreadsheetApp.openById(ssA);

  // source sheet
  var sSheet = ssDoc.getSheetByName(ssName);

  // get full range of data
  var SRange = sSheet.getDataRange();

  // get A1 notation identifying the range
  var A1Range = SRange.getA1Notation();

  // get the data values in range
  var SData = SRange.getValues();

  // target spreadsheet
  var tss = SpreadsheetApp.openById(ssB);

  // target sheet
  var ts = tss.getSheetByName(sdName);

  // clear the Google Sheet before copy
  ts.clear({contentsOnly: true});

  // set the target range to the values of the source data
  ts.getRange(A1Range).setValues(SData);

};

// converts files in folder to Google format
function convert(convertFolder) {
  var folder = DriveApp.getFolderById(convertFolder);
  var files = folder.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    Drive.Files.copy({}, file.getId(), {convert: true});
    Drive.Files.remove(file.getId());
  }
};

// deletes unused columns in csv to save space
function deleteColumns(csvSheetId, csvSheetName) {

  var spreadsheet = SpreadsheetApp.openById(csvSheetId)
  var csName = csvSheetName;
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName(csName), true);
  spreadsheet.getRange('1:1').activate();
  var header = spreadsheet.getRange('1:1');
  var deleteValues = (header.getValues());
  var counter = 1;
  for (i=0; i<deleteValues[0].length; i++) {
    if
      (
         deleteValues[0][i] == 'FirstName' ||
         deleteValues[0][i] == 'MiddleName' ||
         deleteValues[0][i] == 'LastName' ||
         deleteValues[0][i] == 'SSN' ||
         deleteValues[0][i] == 'NameSuffix' ||
         deleteValues[0][i] == 'NameDataQuality' ||
         deleteValues[0][i] == 'SSNDataQuality' ||
         deleteValues[0][i] == 'DOBDataQuality' ||
         deleteValues[0][i] == 'YearEnteredService' ||
         deleteValues[0][i] == 'YearSeparated' ||
         deleteValues[0][i] == 'WorldWarII' ||
         deleteValues[0][i] == 'KoreanWar' ||
         deleteValues[0][i] == 'VietnamWar' ||
         deleteValues[0][i] == 'DesertStorm' ||
         deleteValues[0][i] == 'AfghanistanOEF' ||
         deleteValues[0][i] == 'IraqOIF' ||
         deleteValues[0][i] == 'IraqOND' ||
         deleteValues[0][i] == 'OtherTheater' ||
         deleteValues[0][i] == 'MilitaryBranch' ||
         deleteValues[0][i] == 'DischargeStatus' ||
         deleteValues[0][i] == 'DateCreated' ||
         deleteValues[0][i] == 'DateUpdated' ||
         deleteValues[0][i] == 'UserID' ||
         deleteValues[0][i] == 'DateDeleted' ||
         deleteValues[0][i] == 'ExportID' ||
         deleteValues[0][i] == 'OrganizationID' ||
         deleteValues[0][i] == 'ProjectName' ||
         deleteValues[0][i] == 'OperatingStartDate' ||
         deleteValues[0][i] == 'OperatingEndDate' ||
         deleteValues[0][i] == 'ContinuumProject' ||
         deleteValues[0][i] == 'HousingType' ||
         deleteValues[0][i] == 'ResidentialAffiliation' ||
         deleteValues[0][i] == 'TrackingMethod' ||
         deleteValues[0][i] == 'HMISParticipatingProject' ||
         deleteValues[0][i] == 'TargetPopulation' ||
         deleteValues[0][i] == 'PITCount' ||
         deleteValues[0][i] == 'DateCreated' ||
         deleteValues[0][i] == 'DateUpdated' ||
         deleteValues[0][i] == 'UserID' ||
         deleteValues[0][i] == 'DateDeleted' ||
         deleteValues[0][i] == 'HealthAndDVID' ||
         deleteValues[0][i] == 'InformationDate' ||
         deleteValues[0][i] == 'WhenOccurred' ||
         deleteValues[0][i] == 'CurrentlyFleeing' ||
         deleteValues[0][i] == 'GeneralHealthStatus' ||
         deleteValues[0][i] == 'DentalHealthStatus' ||
         deleteValues[0][i] == 'MentalHealthStatus' ||
         deleteValues[0][i] == 'PregnancyStatus' ||
         deleteValues[0][i] == 'DueDate' ||
         deleteValues[0][i] == 'DataCollectionStage' ||
         deleteValues[0][i] == 'ExitID' ||
         deleteValues[0][i] == 'OtherDestination' ||
         deleteValues[0][i] == 'HousingAssessment' ||
         deleteValues[0][i] == 'SubsidyInformation' ||
         deleteValues[0][i] == 'ProjectCompletionStatus' ||
         deleteValues[0][i] == 'EarlyExitReason' ||
         deleteValues[0][i] == 'ExchangeForSex' ||
         deleteValues[0][i] == 'ExchangeForSexPastThreeMonths' ||
         deleteValues[0][i] == 'CountOfExchangeForSex' ||
         deleteValues[0][i] == 'ExchangeForSexPastThreeMonths' ||
         deleteValues[0][i] == 'CountOfExchangeForSex' ||
         deleteValues[0][i] == 'AskedOrForcedToExchangeForSex' ||
         deleteValues[0][i] == 'AskedOrForcedToExchangeForSexPastThreeMonths' ||
         deleteValues[0][i] == 'WorkPlaceViolenceThreats' ||
         deleteValues[0][i] == 'WorkPlacePromiseDifference' ||
         deleteValues[0][i] == 'CoercedToContinueWork' ||
         deleteValues[0][i] == 'LaborExploitPastThreeMonths' ||
         deleteValues[0][i] == 'CounselingReceived' ||
         deleteValues[0][i] == 'IndividualCounseling' ||
         deleteValues[0][i] == 'FamilyCounseling' ||
         deleteValues[0][i] == 'GroupCounseling' ||
         deleteValues[0][i] == 'SessionCountAtExit' ||
         deleteValues[0][i] == 'PostExitCounselingPlan' ||
         deleteValues[0][i] == 'SessionsInPlan' ||
         deleteValues[0][i] == 'DestinationSafeClient' ||
         deleteValues[0][i] == 'DestinationSafeWorker' ||
         deleteValues[0][i] == 'PosAdultConnections' ||
         deleteValues[0][i] == 'PosPeerConnections' ||
         deleteValues[0][i] == 'PosCommunityConnections' ||
         deleteValues[0][i] == 'AftercareDate' ||
         deleteValues[0][i] == 'AftercareProvided' ||
         deleteValues[0][i] == 'EmailSocialMedia' ||
         deleteValues[0][i] == 'Telephone' ||
         deleteValues[0][i] == 'InPersonIndividual' ||
         deleteValues[0][i] == 'InPersonGroup' ||
         deleteValues[0][i] == 'CMExitReason' ||
         deleteValues[0][i] == 'HouseholdID' ||
         deleteValues[0][i] == 'LOSUnderThreshold' ||
         deleteValues[0][i] == 'DateToStreetESSH' ||
         deleteValues[0][i] == 'TimesHomelessPastThreeYears' ||
         deleteValues[0][i] == 'MonthsHomelessPastThreeYears' ||
         deleteValues[0][i] == 'DateOfEngagement' ||
         deleteValues[0][i] == 'MoveInDate' ||
         deleteValues[0][i] == 'DateOfPATHStatus' ||
         deleteValues[0][i] == 'ClientEnrolledInPATH' ||
         deleteValues[0][i] == 'ReasonNotEnrolled' ||
         deleteValues[0][i] == 'WorstHousingSituation' ||
         deleteValues[0][i] == 'PercentAMI' ||
         deleteValues[0][i] == 'LastPermanentStreet' ||
         deleteValues[0][i] == 'LastPermanentCity' ||
         deleteValues[0][i] == 'LastPermanentState' ||
         deleteValues[0][i] == 'LastPermanentZIP' ||
         deleteValues[0][i] == 'AddressDataQuality' ||
         deleteValues[0][i] == 'DateOfBCPStatus' ||
         deleteValues[0][i] == 'EligibleForRHY' ||
         deleteValues[0][i] == 'ReasonNoServices' ||
         deleteValues[0][i] == 'RunawayYouth' ||
         deleteValues[0][i] == 'SexualOrientation' ||
         deleteValues[0][i] == 'SexualOrientationOther' ||
         deleteValues[0][i] == 'FormerWardChildWelfare' ||
         deleteValues[0][i] == 'ChildWelfareYears' ||
         deleteValues[0][i] == 'ChildWelfareMonths' ||
         deleteValues[0][i] == 'FormerWardJuvenileJustice' ||
         deleteValues[0][i] == 'JuvenileJusticeYears' ||
         deleteValues[0][i] == 'JuvenileJusticeMonths' ||
         deleteValues[0][i] == 'UnemploymentFam' ||
         deleteValues[0][i] == 'MentalHealthIssuesFam' ||
         deleteValues[0][i] == 'PhysicalDisabilityFam' ||
         deleteValues[0][i] == 'AlcoholDrugAbuseFam' ||
         deleteValues[0][i] == 'InsufficientIncome' ||
         deleteValues[0][i] == 'IncarceratedParent' ||
         deleteValues[0][i] == 'ReferralSource' ||
         deleteValues[0][i] == 'CountOutreachReferralApproaches' ||
         deleteValues[0][i] == 'UrgentReferral' ||
         deleteValues[0][i] == 'TimeToHousingLoss' ||
         deleteValues[0][i] == 'ZeroIncome' ||
         deleteValues[0][i] == 'AnnualPercentAMI' ||
         deleteValues[0][i] == 'FinancialChange' ||
         deleteValues[0][i] == 'HouseholdChange' ||
         deleteValues[0][i] == 'EvictionHistory' ||
         deleteValues[0][i] == 'SubsidyAtRisk' ||
         deleteValues[0][i] == 'LiteralHomelessHistory' ||
         deleteValues[0][i] == 'DisabledHoH' ||
         deleteValues[0][i] == 'CriminalRecord' ||
         deleteValues[0][i] == 'SexOffender' ||
         deleteValues[0][i] == 'DependentUnder6' ||
         deleteValues[0][i] == 'SingleParent' ||
         deleteValues[0][i] == 'HH5Plus' ||
         deleteValues[0][i] == 'IraqAfghanistan' ||
         deleteValues[0][i] == 'FemVet' ||
         deleteValues[0][i] == 'HPScreeningScore' ||
         deleteValues[0][i] == 'VAMCStation' ||
         deleteValues[0][i] == 'ThresholdScore' ||
         deleteValues[0][i] == ''
         )
          {
            spreadsheet.deleteColumn(counter); }
    else {
      counter = counter + 1;
    }
  }
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName(csName), false);
};
4

0 回答 0