added app script file
This commit is contained in:
parent
ff63806fc6
commit
f9162333d3
2636
account/yarn.lock
2636
account/yarn.lock
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,149 @@
|
|||
// SCRIPTS FOR USE WITH THE GOOGLE SHEETS APP SCRIPT
|
||||
|
||||
// Adds a unix timestamp to each word on creation for unique id keeping
|
||||
function onEdit(e) {
|
||||
var sheet = e.source.getActiveSheet();
|
||||
if (sheet.getName() === "Dictionary") {
|
||||
var actRng = sheet.getActiveRange();
|
||||
var editColumn = actRng.getColumn();
|
||||
var rowIndex = actRng.getRowIndex();
|
||||
var dateCol = 1;
|
||||
var orderCol = 3;
|
||||
if (editColumn == orderCol) {
|
||||
sheet.getRange(rowIndex, dateCol).setValue(new Date().getTime());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onOpen() {
|
||||
var menuEntries = [
|
||||
{name: "Go to Cell", functionName: "goToCell"},
|
||||
{name: "Go to Row", functionName: "goToRow"},
|
||||
{name: "Go to 1st empty Row", functionName: "selectFirstEmptyRow"},
|
||||
{name: "Expand Part of Speech Abbreviations", functionName: "expandPartsOfSpeech"},
|
||||
{name: "Standardize Pashto", functionName: "standardizePashtoColumns"},
|
||||
{name: "Standardize Phonetics", functionName: "standardizePhonetics"},
|
||||
{name: "Find Unlinked Compound Verb", functionName: "selectUnlinkedCompound"},
|
||||
];
|
||||
SpreadsheetApp.getActiveSpreadsheet().addMenu("MyUtils", menuEntries);
|
||||
}
|
||||
|
||||
function standardizePashtoText(input) {
|
||||
return input.trim().replace(/\u0649/g, "\u06cc")
|
||||
// Arabic ك replace with ک
|
||||
.replace(/\u0643/g, "\u06a9")
|
||||
// Farsi گ replaced with ګ
|
||||
.replace(/گ/g, "ګ")
|
||||
// Replace ي s in the middle of words to ی
|
||||
.replace(/ي(?=[\u0600-\u060b\u060d-\u06ff])/g, "ی")
|
||||
// Replace آ two character version with combined آ character
|
||||
.replace(/آ/g, "آ");
|
||||
}
|
||||
|
||||
var pashtoColumns = ["J", "L", "O", "Q", "S", "U", "W", "Y", "AA"];
|
||||
var phoneticsColumns = ["K","M", "P", "R", "T", "V", "X", "Z", "AB"];
|
||||
|
||||
function standardizePashtoColumns() {
|
||||
for(var h=0;h<pashtoColumns.length;h++) {
|
||||
var rng = SpreadsheetApp.getActiveSheet().getRange(pashtoColumns[h]+":"+pashtoColumns[h]);
|
||||
var rngA = rng.getValues();
|
||||
for(var i=1;i<rngA.length;i++) {
|
||||
if (rngA[i][0]) {
|
||||
rngA[i][0] = standardizePashtoText(rngA[i][0]);
|
||||
}
|
||||
}
|
||||
rng.setValues(rngA);
|
||||
}
|
||||
}
|
||||
|
||||
function expandPartsOfSpeech() {
|
||||
const rng = SpreadsheetApp.getActiveSheet().getRange("E:E");
|
||||
const rngA = rng.getValues();
|
||||
for(var i=1;i<rngA.length;i++) {
|
||||
rngA[i][0] = rngA[i][0].replace(/tr\./g, "trans.");
|
||||
rngA[i][0] = rngA[i][0].replace(/int\./g, "intrans.");
|
||||
rngA[i][0] = rngA[i][0].replace(/sc\./g, "stat. comp.");
|
||||
rngA[i][0] = rngA[i][0].replace(/dc\./g, "dyn. comp.");
|
||||
}
|
||||
rng.setValues(rngA);
|
||||
}
|
||||
|
||||
function standardizePhonetics() {
|
||||
for(var h=0;h<phoneticsColumns.length;h++) {
|
||||
const rng = SpreadsheetApp.getActiveSheet().getRange(phoneticsColumns[h]+":"+phoneticsColumns[h]);
|
||||
const rngA = rng.getValues();
|
||||
for(var i=1;i<rngA.length;i++) {
|
||||
rngA[i][0] = rngA[i][0].replace(/’/g, "'").trim();
|
||||
}
|
||||
rng.setValues(rngA);
|
||||
}
|
||||
}
|
||||
|
||||
function goToCell() {
|
||||
var strRange = Browser.inputBox("Insert the required cell (e.g.: B351):", Browser.Buttons.OK_CANCEL);
|
||||
if(strRange != "cancel") {
|
||||
try {
|
||||
SpreadsheetApp.getActiveSheet().getRange(strRange).activate();
|
||||
}
|
||||
catch(e) {Browser.msgBox(e.message);}
|
||||
}
|
||||
}
|
||||
|
||||
function goToRow() {
|
||||
var strRange = Browser.inputBox("Insert the required row number (e.g.: 132):", Browser.Buttons.OK_CANCEL);
|
||||
if(strRange != "cancel") {
|
||||
try {
|
||||
strRange = "A" + strRange
|
||||
SpreadsheetApp.getActiveSheet().getRange(strRange).activate();
|
||||
}
|
||||
catch(e) {
|
||||
Browser.msgBox(e.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function selectFirstEmptyRow() {
|
||||
var sheet = SpreadsheetApp.getActiveSpreadsheet();
|
||||
sheet.setActiveSelection(sheet.getRange("A"+getFirstEmptyRowWholeRow()));
|
||||
}
|
||||
|
||||
function selectUnlinkedCompound() {
|
||||
var sheet = SpreadsheetApp.getActiveSpreadsheet();
|
||||
sheet.setActiveSelection(sheet.getRange("F"+getFirstUnlinkedCompound()));
|
||||
}
|
||||
|
||||
function getFirstUnlinkedCompound() {
|
||||
var sheet = SpreadsheetApp.getActiveSheet();
|
||||
var range = sheet.getDataRange();
|
||||
var values = range.getValues();
|
||||
var row = 0;
|
||||
function linkExists(link) {
|
||||
for (var r=0; r<values.length; r++) {
|
||||
if (link === values[r][0]) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
for (var row=0; row<values.length; row++) {
|
||||
var ps = values[row][4];
|
||||
if ((typeof ps === "string") && ps.indexOf("comp.")>-1) {
|
||||
// check if there is a link to another word on the compound word
|
||||
var linkToWord = values[row][5];
|
||||
if (!linkToWord) break;
|
||||
// check if the link is valid
|
||||
if (!linkExists(linkToWord)) return row+1;
|
||||
};
|
||||
}
|
||||
return row+1;
|
||||
}
|
||||
|
||||
|
||||
function getFirstEmptyRowWholeRow() {
|
||||
var sheet = SpreadsheetApp.getActiveSheet();
|
||||
var range = sheet.getDataRange();
|
||||
var values = range.getValues();
|
||||
var row = 0;
|
||||
for (var row=0; row<values.length; row++) {
|
||||
if (!values[row].join("")) break;
|
||||
}
|
||||
return (row+1);
|
||||
}
|
|
@ -42,6 +42,7 @@ const fillerWords = [
|
|||
"make",
|
||||
"etc.",
|
||||
"see",
|
||||
"pertaining",
|
||||
"",
|
||||
];
|
||||
|
||||
|
|
Loading…
Reference in New Issue