Google Sheets Apps Script – Dynamic Dependent Dropdown Data Validation Lists

Learn how to assign data validation using Apps Scripts and create dynamic dependent dropdown lists for the whole column for Google Sheets.

function onEdit(){
  var tabLists = "lists";
  var tabValidation = "Main";
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tabLists);
  
  var activeCell = ss.getActiveCell();
  
  if(activeCell.getColumn() == 1 && activeCell.getRow() > 1 && ss.getSheetName() == tabValidation){
    
    activeCell.offset(0, 1).clearContent().clearDataValidations();
    
    var makes = datass.getRange(1, 1, 1, datass.getLastColumn()).getValues();
    
    var makeIndex = makes[0].indexOf(activeCell.getValue()) + 1;
    
    if(makeIndex != 0){
    
        var validationRange = datass.getRange(3, makeIndex, datass.getLastRow());
        var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
        activeCell.offset(0, 1).setDataValidation(validationRule);
  
     }  
      
  }
  
}

Understand How This Script Works

 

Google Sheets Apps Script – Combine Multiple Tabs to a Master Tab When Column Positions Don’t Match

Results of Apps Script tutorial to combine multiple worksheets to a master sheet. It will also work when column positions don’t match.

function combineData() {
  
  var masterSheet = "Master";
  
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(masterSheet);
  var lc = ss.getLastColumn();
  var lr = ss.getLastRow() > 1 ? ss.getLastRow() : 2;
  
  ss.getRange(2, 1, lr-1, lc).clearContent();
  
  var labels = ss.getRange(1, 1, 1, lc).getValues()[0];
  
  
  labels.forEach(function(label,i){
    var colValues = getCombinedColumnValues(label,masterSheet);
    ss.getRange(2, i+1, colValues.length, 1).setValues(colValues);
    
  })
  
}


function getCombinedColumnValues(label,masterSheetName) {
  
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  
  var colValues = [];
  
  for([i,sheet] in sheets){
    var sheetName = sheet.getSheetName();
    if(sheetName !== masterSheetName) {
      var tempValues = getColumnValues(label,sheetName);
      colValues = colValues.concat(tempValues);
    }
  }
  
  return colValues;
}


function getColumnValues(label,sheetName) {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var colIndex = getColumnIndex(label,sheetName);
  var numRows = ss.getLastRow() - 1;
  var colValues = ss.getRange(2, colIndex, numRows, 1).getValues();
  return colValues;
}


function getColumnIndex(label,sheetName) {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  
  var lc = ss.getLastColumn();
  var lookupRangeValues = ss.getRange(1, 1, 1, lc).getValues()[0];
  
  var index = lookupRangeValues.indexOf(label) + 1;
  
  return index;
  
}

Understand How This Script Works

Google Sheets Get Distance & Time – GOOGLEMAPS Function

Add the following code to your Apps Script Editor first and then use the function.

/**
* Get Distance between 2 different addresses.
* @param start_address Address as string Ex. "300 N LaSalles St, Chicago, IL"
* @param end_address Address as string Ex. "900 N LaSalles St, Chicago, IL"
* @param return_type Return type as string Ex. "miles" or "kilometers" or "minutes" or "hours"
* @customfunction
*/

function GOOGLEMAPS(start_address,end_address,return_type) {

  // https://www.chicagocomputerclasses.com/
  // Nov 2017
  // improvements needed
  
  var mapObj = Maps.newDirectionFinder();
  mapObj.setOrigin(start_address);
  mapObj.setDestination(end_address);
  var directions = mapObj.getDirections();
  
  var getTheLeg = directions["routes"][0]["legs"][0];
  
  var meters = getTheLeg["distance"]["value"];
  
  switch(return_type){
    case "miles":
      return meters * 0.000621371;
      break;
    case "minutes":
        // get duration in seconds
        var duration = getTheLeg["duration"]["value"];
        //convert to minutes and return
        return duration / 60;
      break;
    case "hours":
        // get duration in seconds
        var duration = getTheLeg["duration"]["value"];
        //convert to hours and return
        return duration / 60 / 60;
      break;      
    case "kilometers":
      return meters / 1000;
      break;
    default:
      return "Error: Wrong Unit Type";
   }
  
}

How to Use GOOGLEMAPS Function?

Understand How This Script Works

Google Sheets Import JSON – IMPORTJSON Function

Add the following code to your Apps Script Editor first and then use the function.

/**
* Imports JSON data to your spreadsheet Ex: IMPORTJSON("http://myapisite.com","city/population")
* @param url URL of your JSON data as string
* @param xpath simplified xpath as string
* @customfunction
*/
function IMPORTJSON(url,xpath){
  
  try{
    // /rates/EUR
    var res = UrlFetchApp.fetch(url);
    var content = res.getContentText();
    var json = JSON.parse(content);
    
    var patharray = xpath.split("/");
    //Logger.log(patharray);
    
    for(var i=0;i<patharray.length;i++){
      json = json[patharray[i]];
    }
    
    //Logger.log(typeof(json));
    
    if(typeof(json) === "undefined"){
      return "Node Not Available";
    } else if(typeof(json) === "object"){
      var tempArr = [];
      
      for(var obj in json){
        tempArr.push([obj,json[obj]]);
      }
      return tempArr;
    } else if(typeof(json) !== "object") {
      return json;
    }
  }
  catch(err){
      return "Error getting data";  
  }
  
}

How to Use IMPORTJSON Function?

Understand How This Script Works

Copy WordPress Pages and Posts

Average Salaries – City of Chicago Fire Police Department Earnings

This data is compiled using public dataset released by the City of Chicago
Date Created 2/28/2017

Position Average Salary # Employed
FIRST DEPUTY SUPERINTENDENT $197,724 1
CHIEF $185,364 5
GENERAL COUNSEL $170,112 1
DEPUTY CHIEF $168,835 17
SUPERINTENDENT’S CHIEF OF STAFF $162,012 1
COMMANDER $161,324 40
DIR OF HUMAN RESOURCES $150,396 1
DIR OF CAPS $145,476 1
CAPTAIN $134,546 33
DIR OF MANAGEMENT/LABOR AFFAIRS $134,340 1
DIRECTOR OF FINANCE $134,268 1
ASST GENERAL COUNSEL $129,096 1
DIR OF NEWS AFFAIRS $124,080 1
LIEUTENANT $123,281 184
DEPUTY DIR $123,048 2
POLICE LEGAL OFFICER II $118,797 4
ASSISTANT DIRECTOR OF FINANCE $116,856 1
DIR OF POLICE RECORDS $115,428 1
EXPLOSIVES TECHNICIAN I $109,597 13
POLICE FORENSIC INVESTIGATOR I $109,059 10
DIR OF FACILITIES MANAGEMENT $109,008 1
FINGERPRINT TECHNICIAN IV $108,228 1
POLICE OFFICER(ASGND AS SUPVG LATENT PRINT EX) $107,988 1
SERGEANT $106,838 1185
SENIOR PROGRAMMER/ANALYST $106,836 2
POLICE LEGAL OFFICER I $106,308 2
POLICE OFFICER (ASSIGNED AS SECURITY SPECIALIST) $105,106 16
FORENSIC FIREARM/EVIDENCE IDENT TECH $103,716 1
DIR OF RESEARCH AND PLANNING $100,656 1
MANAGER OF POLICE PAYROLLS $100,656 1
CAPS COORDINATOR $100,656 1
FISCAL ADMINISTRATOR $100,344 1
PROGRAM ANALYST $98,616 1
SUBPOENA OFFICER $98,616 1
DIR OF GRANTS MANAGEMENT $97,860 1
GRANTS RESEARCH SPECIALIST $97,812 3
CLINICAL THERAPIST III $97,812 1
CRIMINALIST III $97,812 1
AUDITOR III $97,812 1
POLICE OFFICER (PER ARBITRATION AWARD) $97,611 7
POLICE OFFICER (ASSIGNED AS DETECTIVE) $97,301 896
POLICE OFFICER (ASSIGNED AS CANINE HANDLER) $96,028 16
POLICE AGENT $95,905 7
POLICE OFFICER (ASSIGNED AS TRAFFIC SPECIALIST) $95,296 21
POLICE OFFICER/EXPLSV DETECT K9 HNDLR $94,423 42
POLICE OFFICER (ASGND AS MARINE OFFICER) $94,297 26
TECHNICAL TRAINING SPECIALIST $94,200 1
COORD OF SPECIAL PROJECTS $93,428 3
ASST DIR $93,324 2
POLICE OFFICER (ASGND AS MOUNTED PATROL OFFICER) $93,185 21
POLICE OFFICER(ASGND AS LATENT PRINT EX) $92,813 10
POLICE OFFICER (ASSIGNED AS EVIDENCE TECHNICIAN) $92,431 86
POLICE TECHNICIAN $92,183 11
CHIEF OPERATIONS ANALYST $92,142 2
MANAGER OF POLICE PERSONNEL $91,476 1
POLICE OFFICER / FLD TRNG OFFICER $91,275 91
POLICE OFFICER (ASSGN AS HELICOPTER PILOT) $91,199 5
CRIMINAL HISTORY ANALYST $90,684 6
SUPERVISOR OF EMPLOYEE REFERRAL SERVICES $90,288 1
ADMINISTRATIVE MANAGER $90,092 3
PROGRAMMER/ANALYST $89,676 1
AREA COORD – CAPS $89,400 2
TRAINING OFFICER $88,838 13
PROJECTS ADMINISTRATOR $87,576 1
FINGERPRINT TECHNICIAN III $87,470 5
CONTRACTS COORD $87,324 1
DIR OF ADMINISTRATION II $87,324 2
ASST MANAGER OF POLICE PAYROLLS $87,324 1
OCCUPATIONAL HEALTH NURSE $87,204 1
CHIEF VOUCHER EXPEDITER $85,764 1
ASST TO THE EXEC DIR $83,340 1
ASST SUPVSR OF POLICE RECORDS $83,340 1
TRAINING DIRECTOR $83,340 1
POLICE OFFICER $82,902 9184
SENIOR RESEARCH ANALYST $82,044 3
YOUTH SERVICES COORD $81,582 2
ADMINISTRATIVE ASST III $80,724 9
INFORMATION SERVICES COORD $80,619 4
PARALEGAL II $80,076 2
WARRANT AND EXTRADITION AIDE $79,302 4
STAFF ASST $79,194 4
PUBLIC INFORMATION OFFICER $78,204 1
ADMINISTRATIVE SERVICES OFFICER II $77,934 2
MANAGER OF DATA ENTRY OPERATORS $75,960 1
ATTORNEY $75,090 2
GRAPHIC ARTIST III $74,676 1
SUPVSR OF DATA ENTRY OPERATORS $74,676 3
ACCOUNTING TECHNICIAN II $74,676 2
SENIOR PHOTOGRAPHIC TECHNICIAN $74,676 1
CONTRACTS REVIEW SPECIALIST II $73,116 2
ASST DIR OF NEWS AFFAIRS $72,516 1
PERSONAL ASSISTANT $72,492 1
COMMUNITY ORGANIZER-CAPS $71,791 19
TIMEKEEPER – CPD $71,415 34
EMPLOYEE COMPENSATION TECHNICIAN III $71,292 1
SUPERVISING PROPERTY CUSTODIAN $71,292 1
DOMESTIC VIOLENCE ADVOCATE $71,292 1
FINGERPRINT TECHNICIAN II $69,971 9
ADMIN SERVICES OFFICER I-EXCLUDED $69,396 4
PROGRAM DEVELOPMENT COORD $69,240 1
INVESTIGATOR $68,832 2
SUPVSR OF PERSONNEL ADMINISTRATION $68,556 1
ADMINISTRATIVE SERVICES OFFICER I $68,192 3
ADMINISTRATIVE ASST II $67,327 13
ACCOUNTANT III $66,780 1
PRINCIPAL DATA BASE ANALYST $65,424 1
PERSONAL COMPUTER OPERATOR III $64,992 1
LABORATORY TECHNICIAN III $63,552 4
PERSONNEL ASSISTANT $63,196 6
PROPERTY CUSTODIAN $62,706 19
CLERK IV $62,635 5
SUPVSR OF INVENTORY CONTROL I $62,004 1
ACCOUNTANT II $60,540 1
DETENTION AIDE $60,048 201
FINGERPRINT TECHNICIAN I $59,820 10
SENIOR DATA ENTRY OPERATOR $58,390 100
PERSONAL COMPUTER OPERATOR II $56,016 5
PERSONAL COMPUTER OPERATOR I $52,506 13
CLERK III $49,239 55
DATA ENTRY OPERATOR $43,687 12
POLICE CADET $9,930 25
PROGRAM AIDE $9,641 10

Provided by http://www.chicagocomputerclasses.com/

Copy WordPress Pages and Posts

Average Salaries – City of Chicago Fire Department Earnings

This data is compiled using public dataset released by the City of Chicago
Date Created 2/24/2017

Position Average Salary # Employed
FIRE COMMISSIONER $202,728 1
FIRST DEPUTY FIRE COMMISSIONER $197,736 1
DEPUTY FIRE COMMISSIONER $187,680 3
ASST DEPUTY FIRE COMMISSIONER $185,352 3
DISTRICT CHIEF $170,112 11
DEPUTY COMMISSIONER $161,886 2
COORD OF AIR MASK SERVICES $157,776 1
DEPUTY CHIEF OF EMPLOYEE RELATIONS $157,776 1
COMMANDING FIRE MARSHAL $157,776 1
COORD OF FIRE AWARENESS $157,776 1
COORD OF SPECIAL EVENTS LIAISON $157,776 1
DEPUTY DISTRICT CHIEF $156,360 19
ASST DEPUTY CHIEF PARAMEDIC $156,360 11
COORD OF COMMUNITY SERVICES-CFD $148,590 1
MEDICAL DIR $148,284 1
BATTALION CHIEF-PARAMEDIC $147,772 10
CHIEF HELICOPTER PILOT/EMT $145,116 1
COMMANDER-EMT $145,116 2
BATTALION CHIEF – EMT $144,894 94
COMMANDER-PARAMEDIC $144,294 1
CHIEF ADMINISTRATIVE OFFICER $138,780 1
GENERAL COUNSEL $138,372 1
BATTALION CHIEF $136,836 15
CAPTAIN-PARAMEDIC $135,936 11
PARAMEDIC FIELD CHIEF $135,498 38
COMMANDER $132,173 4
CAPTAIN-EMT $132,137 122
LIEUTENANT-EMT (ASSIGNED AS TRAINING INSTRUCTOR) $127,624 3
EXECUTIVE ASST $125,190 1
CAPTAIN $124,791 28
DIR OF NEWS AFFAIRS $124,080 1
COORD OF HUMAN RELATIONS $124,080 1
AMBULANCE COMMANDER $119,415 72
SUPERVISING FIRE MARSHAL-EMT $118,248 1
LIEUTENANT-PARAMEDIC $117,318 77
DIRECTOR OF FINANCE $116,856 1
LIEUTENANT-EMT $113,776 391
CHIEF FIRE PREVENTION ENGINEER $112,308 1
CONTRACTS COORD $110,088 1
DIR OF EMS COMPLIANCE $110,088 1
LIEUTENANT $108,927 148
FIRE PREVENTION ENGINEER $106,836 1
ASST DIR OF PERSONNEL SERVICES $104,748 1
PARAMEDIC I/C (ASSIGNED AS TRAINING INSTRUCTOR) $104,628 2
ASST COMMISSIONER $104,388 2
FIRE ENGINEER-PARAMEDIC $104,004 29
MARINE PILOT – FIRE BOAT $103,557 4
FIREFIGHTER (PER ARBITRATORS AWARD)-PARAMEDIC $103,438 123
FIRE ENGINEER-EMT $102,225 261
DIR OF RESEARCH AND PLANNING $100,656 1
PRINCIPAL PROGRAMMER/ANALYST $100,656 1
PAYROLL ADMINISTRATOR $100,344 1
SUPVSR OF PERSONNEL SERVICES $100,344 1
SUPERVISING AIR MASK TECHNICIAN $99,552 1
FIREFIGHTER (PER ARBITRATORS AWARD) $98,355 16
FIRE ENGINEER $97,912 129
ACCOUNTANT IV $97,812 1
FIRE MARSHAL-EMT $92,101 19
ASSISTANT DIRECTOR OF FINANCE $92,040 1
PROGRAMMER/ANALYST $91,938 2
OCCUPATIONAL HEALTH NURSE $91,596 1
PARAMEDIC I/C $91,285 257
FIRE MARSHAL $90,224 4
FIREFIGHTER-EMT $89,522 1208
FIREFIGHTER $88,994 671
FIREFIGHTER/PARAMEDIC $88,887 259
FINANCE OFFICER $88,788 1
SENIOR AIR MASK TECHNICIAN $87,699 4
DIR / COMMUNITY LIAISON $85,848 1
LABOR RELATIONS SUPVSR $83,340 1
GRAPHIC ARTIST III $81,948 1
STORES LABORER $81,536 2
EXEC ADMINISTRATIVE ASST II $79,596 1
ASST TO THE COMMISSIONER $79,596 1
PERSONAL ASSISTANT $78,936 1
PROJECTS ADMINISTRATOR $76,956 1
SUPVSR OF PAYROLLS $75,960 1
INVESTIGATOR SPECIALIST $75,138 2
ADMINISTRATIVE ASST III $74,231 9
SUPERVISING INVESTIGATOR $73,932 2
STAFF ASST $73,018 5
PARAMEDIC $72,757 344
INVESTIGATOR $69,216 6
FIELD PAYROLL AUDITOR $67,359 8
EXEC ADMINISTRATIVE ASST I $67,356 2
FIREFIGHTER-EMT (RECRUIT) $67,024 301
SENIOR HELP DESK TECHNICIAN $64,296 1
ACCOUNTING TECHNICIAN II $62,004 1
CHIEF VOUCHER EXPEDITER $61,380 1
ADMINISTRATIVE SERVICES OFFICER I $61,380 2
ADMINISTRATIVE ASST II $60,882 6
MANAGER OF DATA ENTRY OPERATORS $59,376 1
SENIOR STOREKEEPER $57,084 1
SENIOR DATA ENTRY OPERATOR $56,544 1
INQUIRY AIDE I $53,904 1
DATA ENTRY OPERATOR $49,140 1
CLERK IV $48,348 4
CLERK III $33,564 1

Provided by http://www.chicagocomputerclasses.com/

Ultimate Google Sheets VLOOKUP Tutorial Series

The ultimate series covering everything you need to know about Google Sheets VLOOKUP function. Most of it applies to Microsoft Excel as well. Make sure you watch the whole series if you want in-depth understanding of VLOOKUP function and everything related. Other functions included: INDEX, MATCH, IFERROR, UNIQUE, QUERY & more.

Excel VBA – Set Column Width Exactly the Same in Other Workbooks – How to Code Examples

This Excel macro is useful if you have one or more Excel files where you want to set the column sizes exactly the same as the other workbook.

This script will take the current active (selected) workbook (Excel File) as a reference, get all the column widths from the active sheet (selected tab) and apply exactly the same widths to the active sheets (selected tabs) on all the other open workbooks (Excel files).

This VBA code will only affect active sheets.

Don’t forget to like and share if you found the code useful!

 

Sub MatchColumWidth()
    'Set column widths of all the other open workbooks to the same size as the current one
    'This script will only affect active sheets
    'http://www.chicagocomputerclasses.com/
    'Chi Brander, Inc.
    '11/29/2016
    
    abookm = ActiveWorkbook.Name
    
    For Each wb In Application.Workbooks
        If wb.Name <> abookm Then
            For Each c In Workbooks(abookm).ActiveSheet.Columns
                wb.ActiveSheet.Columns(c.Column).ColumnWidth = c.ColumnWidth
            Next c
        End If
    Next wb

    MsgBox "Done."

End Sub

 

Posted by Excel Instructor:

http://www.chicagocomputerclasses.com/excel-classes/