Script to open "Today" in multi-sheet Google Sheet
Date : March 29 2020, 07:55 AM
help you fix your problem Sample Sheet- So, I am new to this part. Our work schedule is in by-weekly format, each two-week pay-period is on a separate sheet. , This script should bring you to the sheet with the current date.. function onOpen() {
var today = format(new Date());
var ss = SpreadsheetApp.getActive();
var sheets = ss.getSheets()
.forEach(function (s) {
var val = s.getRange("C2:P2")
.getValues()[0];
for (var i = 0, len = val.length; i < len; i++) {
if (format(val[i]) === today) {
ss.setActiveSheet(s)
break;
}
}
});
}
function format(date) {
return formattedDate = date.getMonth() + 1 + "/" + date.getDate()
}
|
How to fix an OnChange script that worked perfectly, then stopped working when the Google Sheet was modified
Date : March 29 2020, 07:55 AM
like below fixes the issue Overview: the workbook calculates an Overall Score for each Record (or row) based on the Category Scores for each Record. Category Scores are derived from computations performed on hundreds of data points for each Record. I compiled code to send an email onChange called checkComplete (below) based on several examples and tutorials I found online. checkComplete would only send an email if the status of the Record changed to "Complete." An onChange trigger is required since the workbook uses Importrange to load the raw data, and no human interaction takes place for an onEdit trigger. , UPDATE onEdit(e){
if( e.range.getSheet().getName()=='Sheet1' &&
e.range.getColumn()==15&&e.value=="Complete"&&e.oldValue!="Complete"){
sendMail(e.range.getRow(),e.value);
}
}
var rank = SpreadsheetApp.getActiveSheet().getRange(row,1).getValue();
var totalranked = SpreadsheetApp.getActiveSheet().getRange(4,1).getValue();
var address = SpreadsheetApp.getActiveSheet().getRange(row,2).getValue();
var score = SpreadsheetApp.getActiveSheet().getRange(row,6).getValue();
var outlook = SpreadsheetApp.getActiveSheet().getRange(row,14).getValue();
var ildemand = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('1-Dmnd').getRange(row+1,9).getValue();
var aldemand = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('1-Dmnd').getRange(row+1,14).getValue();
var mcdemand = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('1-Dmnd').getRange(row+1,19).getValue();
var increase = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('2-Comp').getRange(row,11).getValue();
var occupancy = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('2-Comp').getRange(row,13).getValue();
var medHHI = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('4-Demo').getRange(row+2,17).getValue();
var medHV = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('4-Demo').getRange(row+2,19).getValue();
var walkscore = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('3-Muni').getRange(row,19).getValue();
var dmnd = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('1-Dmnd').getRange(row+1,5).getValue()
var comp = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('2-Comp').getRange(row,5).getValue();
var muni = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('3-Muni').getRange(row,5).getValue();
var grade = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('3-Muni').getRange(row,17).getValue();
var demo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('4-Demo').getRange(row+2,5).getValue();
var admin_email=XXXXX; //<- list email addresses here
function checkComplete() {
var ss=SpreadsheetApp.getActive();
var sh = ss.getActiveSheet();
if(sh.getName()=="Dashboard"){
var values = sh.getRange('O14:O').getValues().join('-');
if(PropertiesService.getScriptProperties().getKeys().length==0){ // first time you run the script
PropertiesService.getScriptProperties().setProperty('oldValues', values);
return;
}
var oldValues = PropertiesService.getScriptProperties().getProperty('oldValues').split('-');
var valuesArray = values.split('-');
while (valuesArray.length>oldValues.length){
oldValues.push('x'); // if you append some rows since last exec
}
Logger.log('oldValues = '+oldValues)
Logger.log('current values = '+valuesArray)
for(var n=0;n<valuesArray.length;n++){
if(oldValues.indexOf(valuesArray[n])==-1){ // check for any difference
Logger.log('value changed on row '+n+1+' value = '+valuesArray[n]+' , mail sent');
sendMail(n+1,valuesArray[n]);
}
}
PropertiesService.getScriptProperties().setProperty('oldValues', values);
}
}
function sendMail(row,val){
Logger.log('value changed on row '+row+' value = '+val+' , mail sent');
var rank = sh.getRange(row,1).getValue();
var totalranked = sh.getRange(4,1).getValue();
var address = sh.getRange(row,2).getValue();
var score = sh.getRange(row,6).getValue();
var outlook = sh.getRange(row,14).getValue();
var ildemand = ss.getSheetByName('1-Dmnd').getRange(row+1,9).getValue();
var aldemand = ss.getSheetByName('1-Dmnd').getRange(row+1,14).getValue();
var mcdemand = ss.getSheetByName('1-Dmnd').getRange(row+1,19).getValue();
var increase = ss.getSheetByName('2-Comp').getRange(row,11).getValue();
var occupancy = ss.getSheetByName('2-Comp').getRange(row,13).getValue();
var medHHI = ss.getSheetByName('4-Demo').getRange(row+2,17).getValue();
var medHV = ss.getSheetByName('4-Demo').getRange(row+2,19).getValue();
var walkscore = ss.getSheetByName('3-Muni').getRange(row,19).getValue();
var dmnd = ss.getSheetByName('1-Dmnd').getRange(row+1,5).getValue()
var comp = ss.getSheetByName('2-Comp').getRange(row,5).getValue();
var muni = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('3-Muni').getRange(row,5).getValue();
var grade = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('3-Muni').getRange(row,17).getValue();
var demo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('4-Demo').getRange(row+2,5).getValue();
// MailApp.sendEmail(admin_email,'EARLY results for '+address+' are ready!','EARLY says the Site is '+outlook+' and ranks # '+rank+' out of '+totalranked+' with an overall Score of '+score+'. The projected Net Demand is '+dmnd+' with: IL '+ildemand+' units, AL '+aldemand+' units and MC '+mcdemand+' units. The competitive environment is '+comp+' with an occupancy rate of '+occupancy*100+'% for nearby properties, and an expected supply increase of '+increase*100+'%. The location is '+walkscore+', and its public schools have a grade of '+grade+' making it '+muni+'. The demographic trends are '+demo+' with Median HHI of $'+medHHI+' and a median Home Value of $'+medHV+'. For more information, please visit https://docs.google.com/spreadsheets/d/1ydcXQilx6hxhI6HPpWTPT7Bq9a-gXPa7h8UC6KL9W8c/edit?usp=sharing.');
// add senior growth rate(s) to the Demographic summary sentence - Sept 3 2019
}
|
Excel VBA exit sub if txt file modified today
Date : March 29 2020, 07:55 AM
wish of those help First you are saying the variable file is of type Object Dim file As Object dim fileName as String
Dim file As Object
Dim FSO as Object
fileName = ThisWorkbook.Path & "\Logs.txt"
set FSO = CreateObject("scripting.filesystemobject")
set file = FSO.GetFile(fileName)
|
google sheet script to email mutiple blob one create by google sheet and another created by files in google Drive folder
Date : March 29 2020, 07:55 AM
around this issue You want to send an email including the attachment files by including all blobs. If my understanding is correct, how about the following modification? var attachements = [];
var attachements = [att];
|
Google App Script + Google Sheet - Fetch URL from cell (which links to separate sheet) and pull in sheet tab from linked
Tag : url , By : OlioEngr
Date : March 29 2020, 07:55 AM
it should still fix some issue Another app script question. I've been working/researching this for a few days and get close, but need to add an element of automation, my current scripts are not suitable for the end goal. , Change this line: var SPREADSHEET_URL_VALUE = SPREADSHEET_URL_REFERENCE_SOURCE_RANGE.getValues();
var SPREADSHEET_URL_VALUE = SPREADSHEET_URL_REFERENCE_SOURCE_RANGE.getValue();
|