Skip to content

Instantly share code, notes, and snippets.

@elkusbry
Created December 18, 2019 01:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save elkusbry/3e16557f1f12a1fa5a32c9e6d69b51ad to your computer and use it in GitHub Desktop.
Save elkusbry/3e16557f1f12a1fa5a32c9e6d69b51ad to your computer and use it in GitHub Desktop.
Example Shareholder Script
function generateShareholderPDF() {
var sharePrice = 24.85;
var spreadsheetId = '1MdZjiDC44RHh5Z_xWPXKK79B2x9XYDx4Hq3nqgm27ys';
var rangeName = 'Sheet1!A1:B50';
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
var outputDocId = '1kr5btUNI03l1jEfiRsCBbxzsmTAjwuC7jn5_n87F3hY';
var shareholderStatementTemplateID = '1smaAifCE_P1K-JJF18mlokzQ9Lq_GIqyvv9GHgrNX7A';
var templateBody = DocumentApp.openById(shareholderStatementTemplateID).getBody();
var body = DocumentApp.openById(outputDocId).getBody();
body.clear();
if (!values) {
Logger.log('No data found.');
} else {
for (var row = 0; row < values.length; row++) {
var shareholderName = values[row][0];
var shareCount = values[row][1];
var shareValue = shareCount * sharePrice;
var statementHeader = templateBody.getChild(1).copy();
var statementInvestor = templateBody.getChild(3).copy();
var statementContent = templateBody.getChild(5).copy();
var statementOwnership = templateBody.getChild(7).copy();
body.appendTable(statementHeader);
body.appendTable(statementInvestor);
body.appendTable(statementContent);
body.appendTable(statementOwnership);
body.replaceText('{{shareholderName}}', shareholderName);
body.replaceText('{{shareCount}}', shareCount);
body.replaceText('{{shareValue}}', '$' + shareValue.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,'));
Logger.log(shareCount, shareValue);
body.appendPageBreak()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment