Skip to content

Instantly share code, notes, and snippets.

//Make reports in Google Docs from data in a Google Sheet, then email them as PDFs
function makeSendReports() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
const [header, ...data] = sh.getDataRange().getDisplayValues();
const group = header[0].split(" - ")[0];
const teacher = header[0].split(" - ")[1];
const docMaster = DriveApp.getFileById('12MEOOsfFrxsQzBXqDe0gOTacncpaDoykTuWgoT5rzqI');
const placeholders = ['#NAME#', '#GROUP#', '#TEACHER#', '#READING#', '#WRITING#', '#SPEAKING#', '#LISTENING#', '#OVERALL#'];
@barrieroberts
barrieroberts / Docs-11
Last active April 5, 2021 22:43
6 Nations Report - Get data from website
//Bound to a Google Sheet
//SCRIPT 1
function getData() {
const ss = SpreadsheetApp.getActiveSpreadsheet(),
shResults = ss.getSheetByName('RESULTS'),
results = shResults.getDataRange().getValues();
//Get appropriate week data (months 0-11)
const wk1 = new Date(2021, 1, 6),
wk2 = new Date(2021, 1, 13),
@barrieroberts
barrieroberts / Docs-10
Last active April 5, 2021 23:12
Conference talk information-webapp form
//Stand alone script file
//SCRIPT 1
function doGet() {
//Get talks
var ssConf = SpreadsheetApp.openById('SPREADSHEET ID');
var shTalkInfo = ssConf.getSheetByName('TALKINFO');
var allTalkInfo = shTalkInfo.getDataRange().getValues();
allTalkInfo.shift();
//Build form
@barrieroberts
barrieroberts / Docs-9
Last active April 5, 2021 23:09
Conference talk information
//Bound to a Google Form
//SCRIPT 1
//Get talks from form submission
function getFormSubmission(e) {
const form = FormApp.getActiveForm();
//Get list of talks selected
const lastRespNo = form.getResponses().length - 1;
const latestResp = form.getResponses()[lastRespNo];
const listOfTalks = latestResp.getItemResponses()[0]
@barrieroberts
barrieroberts / Docs-8
Last active April 5, 2021 23:06
Multiple-page certificates
//Bound to a spreadsheet
//SCRIPT 1
function makeCerts() {
const ss = SpreadsheetApp.getActiveSpreadsheet(),
shCerts = ss.getSheetByName('CERTIFICATES'),
data = shCerts.getDataRange().getValues();
//Column array references and row numbers
const startRowNum = data[0][4], endRowNum = data[0][6];
@barrieroberts
barrieroberts / Docs-7
Last active April 5, 2021 23:03
Make & send student reports
//SCRIPT 1
function makeReports() {
//Get data
var ss = SpreadsheetApp.getActiveSpreadsheet(),
sheet = ss.getActiveSheet(),
data = sheet.getDataRange().getValues(),
company = data[0][0];
data.splice(0, 2);
//Get report template and report folder IDs
@barrieroberts
barrieroberts / Docs-6
Last active April 5, 2021 22:58
Make Student Reports
//SCRIPT 1
function makeReports() {
//Get data
var ss = SpreadsheetApp.getActiveSpreadsheet(),
sheet = ss.getActiveSheet(),
data = sheet.getDataRange().getValues(),
company = data[0][0];
data.splice(0, 2);
//Get report template and report folder IDs
@barrieroberts
barrieroberts / Docs-5
Last active March 12, 2022 16:17
Create invoices2
//SCRIPT 1
function makeInvoice() {
//Get invoice data
const ss = SpreadsheetApp.getActiveSpreadsheet(),
sh = ss.getSheetByName('INVOICES'),
fInvoices = DriveApp.getFolderById('FOLDER ID'),
timeZone = Session.getScriptTimeZone(),
data = sh.getDataRange().getValues();
var invoiceNumb = data[0][6];
@barrieroberts
barrieroberts / Docs-4
Last active April 5, 2021 22:50
Create Invoices
function makeInvoice() {
//Get invoice data
const ss = SpreadsheetApp.getActiveSpreadsheet(),
sh = ss.getSheetByName('INVOICES'),
invoiceTemp = DriveApp.getFileById('DOCUMENT ID'),
fInvoices = DriveApp.getFolderById('FOLDER ID'),
timeZone = Session.getScriptTimeZone(),
data = sh.getDataRange().getValues();
var invoiceNo = data[0][6];
@barrieroberts
barrieroberts / Docs-3
Last active April 5, 2021 22:48
Make sales quotes
//CHAPTER 3 - Bound to a Google Sheet
function makeSalesQuotes() {
//Get quote data, master, folder & timezone
const ss = SpreadsheetApp.getActiveSpreadsheet(),
sh = ss.getSheetByName('QUOTES'),
quoteMaster = DriveApp.getFileById('DOCUMENT ID'),
fQuotes = DriveApp.getFolderById('FOLDER ID'),
timeZone = Session.getScriptTimeZone(),
data = sh.getDataRange().getValues();
data.splice(0, 2);