例外メッセージなどがあればはっきりするのですが、おそらくgetGmailMessage内でJSON文字列 records を組み立てるときにエスケープ不足になっており JSON.parse() に失敗しているのでしょう。JSON文字列を自前で文字列加工して作るのはこういう落とし穴があるのでやめてほしいところです。とりあえず replaceCharacters関数 において、単独で現れる backslash 1文字 (“\”) を バックスラッシュ2文字 (“\\”) に置換すると回避できるのではないかと思います。
function replaceCharacters(str) {
return str
.replace(/"/g, "\'")
.replace(/\\/g, "\\\\")
.replace(//g, "\")
.replace(/\r/g, "\\r")
.replace(/\t/g, "\\t");
}
この修正でうまくいってもいかなくても、元の記事の末尾で replaceCharacters 関数にバグがある旨フィードバックしてくださるとみんなのためになって嬉しいです