Well, it took quite some hacking, but I came up with something that did what I needed it to:
function splitAndSave()
{
var folder = getFolderName();
if (folder == null)
{
return false;
}
var PB = Doc().ElementType.PAGE_BREAK;
var doc = Doc().getActiveDocument();
var body = doc.getBody();
var par = body.getParagraphs();
var curPage = 1;
// Naming scheme for files
var page = Doc().create("pg" + curPage);
for (var i = 0; i < par.length; i++)
{
var hasbreak = false;
for (var j = 0; j < par[i].getNumChildren(); j++)
{
var child = par[i].getChild(j);
if (child.getType() == PB)
{
hasbreak = true;
break;
}
}
if (!hasbreak)
{
var seppar = par[i].copy();
page.getBody().appendParagraph(seppar);
}
else
{
var par1 = par[i].copy();
var par2 = par[1].copy();
var hitbreak = false;
for (var i1 = 0; i1 < par1.getNumChildren(); i1++)
{
if (par1.getChild(i1).getType() == PB)
{
hitbreak = true;
}
if (hitbreak)
{
par1.removeChild(par1.getChild(i1));
}
}
var hitbreak = false;
for (var i1 = 0; i1 < par2.getNumChildren(); i1++)
{
if (par2.getChild(i1).getType() == PB)
{
hitbreak = true;
}
if (!hitbreak || par2.getChild(i1).getType() == PB)
{
par2.removeChild(par2.getChild(i1));
}
}
page.getBody().appendParagraph(par1);
// Add file to folder
page.saveAndClose();
var file = DocsList.getFileById(page.getId());
file.addToFolder(folder);
// Need this step or your file ends up in two places
file.removeFromFolder(DocsList.getRootFolder());
curPage++;
// Naming scheme for files
page = Doc().create("pg" + curPage);
page.getBody().appendParagraph(par2);
}
}
page.saveAndClose();
var file = DocsList.getFileById(page.getId());
file.addToFolder(folder);
// Need this step or your file ends up in two places
file.removeFromFolder(DocsList.getRootFolder());
Ui().alert("Saving process complete");
}
Helper function to get a folder name:
function getFolderName()
{
var response = Ui().prompt("Enter a folder name");
if (response.getSelectedButton() == Ui().Button.OK)
{
var folder = DocsList.createFolder(response.getResponseText());
return folder;
}
else
{
return null;
}
}
Other helpers:
function Doc()
{
return DocumentApp;
}
function Ui()
{
return Doc().getUi();
}
This will break up a Google Document by page with a naming convention of "pg" + incrementing number. It also puts them in a folder specified in a prompt.
The caveat here is that on your document that you plan to split, you need to place a page break at the end of each page. So, basically, when you are moving onto the next page press CTRL + ENTER. It's not a big deal, and actually is a lot faster that pressing enter over and over again until you hit a new page.
Oh, and it is rather slow. That's not a big deal to me because I only need to use it occasionally.