Menu

Script: RecipeGenerator.gs

function RecipeGenerator()
{
//Global variables
var ss = SpreadsheetApp.getActiveSpreadsheet(); //Declares Google Spreadsheets
var sheet = ss.getSheets()[0]; //Declares active sheets
var column = [10,11,12,13,14,15,16]; //donates the columns needed to be populated and used
var CHECK_COLUMNS = [7,8,9,10,11,12,13,14,15,16];
var components = new Array(3); //empty array used for storing which three resources are used
var Done = ss.getRange(“Q2:Q”).getValues(); //collects what is done and not done
var Avals = ss.getRange(“B2:B”).getValues(); //collects the values of the card column
var b = Avals.filter(String).length; //based on the card column, determines how many cards are in the generator

for (var a = 0; a < b;)
{
start: //where the real work is done
if (sheet.getRange(a + 2,18).getValue() == “”)
{
//Determine amount of resources into the recipe
var cell = sheet.getRange(a + 2,3);
var rare = cell.getValue();

if (rare == “Standard”)
{
var num = 5;
}
else if (rare == “Special”)
{
var num = 13;
}
else if (rare == “Exceptional”)
{
var num = 29;
}
else if (rare == “Epic”)
{
var num = 61;
}

//select 3 component types to populate
for (var y = 0; y < 4; y++)
{
var e = Math.floor(Math.random()*7)
components[y] = column[e]
}

//populate component quanity 1 at time
for (var w = 0; w < num; w++)
{
var k = Math.floor(Math.random()*3)
var cell = sheet.getRange(a+2 ,components[k]);
var h = cell.getValue();
cell.setValue(h + 1);
}

//Sets the Realm Materia Column
var cell = sheet.getRange(a + 2,4);
var realm = cell.getValue();

if (realm == “Light”)
{
sheet.getRange(a + 2,7).setValue(“Light Materia”);
}
else if (realm == “Dark”)
{
sheet.getRange(a + 2,7).setValue(“Dark Materia”);
}
else if (realm == “Void”)
{
sheet.getRange(a + 2,7).setValue(“Void Materia”);
}
else if (realm == “”)
{
sheet.getRange(a + 2,7).setValue(“”);
}

//Sets the Element Materia Column
var cell = sheet.getRange(a + 2,5);
var element = cell.getValue();

if (element == “Earth”)
{
sheet.getRange(a + 2,8).setValue(“Earth Materia”);
}
else if (element == “Fire”)
{
sheet.getRange(a + 2,8).setValue(“Fire Materia”);
}
else if (element == “Air”)
{
sheet.getRange(a + 2,8).setValue(“Air Materia”);
}
else if (element == “Water”)
{
sheet.getRange(a + 2,8).setValue(“Water Materia”);
}
else if (element == “Fulcrum”)
{
sheet.getRange(a + 2,8).setValue(“”);
sheet.getRange(a + 2,7).setValue(“”);
}
else if (element == “”)
{
sheet.getRange(a + 2,8).setValue(“”);
}

//Sets the Planet Material Column
var cell = sheet.getRange(a + 2,6);
var planet = cell.getValue();

if (planet == “Minion”)
{
sheet.getRange(a + 2,9).setValue(“Mars – Iron”);
}
else if (planet == “Ambush”)
{
sheet.getRange(a + 2,9).setValue(“Jupiter – Tin”);
}
else if (planet == “Enchantment”)
{
sheet.getRange(a + 2,9).setValue(“Venus – Copper”);
}
else if (planet == “Glyph”)
{
sheet.getRange(a + 2,9).setValue(“Saturn – Lead”);
}
else if (planet == “Spell”)
{
sheet.getRange(a + 2,9).setValue(“Mercury – Mercury”);
}
else if (planet == “Terrain” || “Construct” || “Essence” || “Memory” )
{
sheet.getRange(a + 2,9).setValue(“”);
}
else if (planet == “”)
{
sheet.getRange(a + 2,9).setValue(“”);
}

//Check for Duplicates amoung the Done recipes
//======================================================
// Get the active sheet and info about it
var sourceSheet = SpreadsheetApp.getActiveSheet();
var numRows = sourceSheet.getLastRow();
var numCols = sourceSheet.getLastColumn();

// Create the temporary working sheet
var newSheet = ss.insertSheet(“FindDupes”);

// Copy the desired rows to the FindDupes sheet
for (var i = 0; i < CHECK_COLUMNS.length; i++)
{
var sourceRange = sourceSheet.getRange(1,CHECK_COLUMNS[i],numRows);
var nextCol = newSheet.getLastColumn() + 1;
sourceRange.copyTo(newSheet.getRange(1,nextCol,numRows));
}

// Find duplicates in the FindDupes sheet and color them in the main sheet
var dupes = false;
var data = newSheet.getDataRange().getValues();
for (i = 1; i < data.length – 1; i++)
{
for (j = i+1; j < data.length; j++)
{
if (data[i].join() == data[j].join())
{
dupes = true;
for (var t = 0; t < 10; t++) //clears row if dupes is True
{
var cell = sheet.getRange(a + 2, t + 6).setValue(“”);
}

// sourceSheet.getRange(i+1,1,1,numCols).setBackground(“red”); //used to test if duplicates are being replaced
// sourceSheet.getRange(j+1,1,1,numCols).setBackground(“red”);

ss.deleteSheet(newSheet); //deletes test sheet
break start; //return to start if dupes is True
}
}
}

// Remove the FindDupes temporary sheet
ss.deleteSheet(newSheet);

//======================================================

var cell = sheet.getRange(a + 2 ,18); //Set the Recipe to Done
cell.setValue(“Done”);
a++;
}
else if (sheet.getRange(a + 2,18).getValue() == “Done”) //if row is Done then move on to the next
{
a++;
}
}
}