使用 google 应用程序脚本从 google 文档获取页数
Getting the number of pages from a google document using google apps script
我需要获取 google 文档的页数并且遇到了以下代码
function getNumPages() {
var blob = DocumentApp.getActiveDocument().getAs("application/pdf");
var data = blob.getDataAsString();
var pages = parseInt(data.match(/ \/N (\d+) /)[1], 10);
Logger.log("pages = " + pages);
return pages;
}
当 运行 但是我在第 4 行收到以下错误
TypeError: Cannot read property '1' of null
当我记录它输出的数据变量时
%PDF-1.4
%����
1 0 obj
<</Title (Reddit_Fin)
/Producer (Skia/PDF m92 Google Docs Renderer)>>
endobj
3 0 obj
<</ca 1
/BM /Normal>>
endobj
5 0 obj
<</Filter /FlateDecode
/Length 548>> stream
x��UQk�0~ϯ��%[�
cp�}��lka�����s��H��]Y H�>�>����! ����ϐ-8�~�>��j�B�����>z��w�>p�9�yx���<�&J�d�Q2��K~
���fm|{���4�>���/1��
这是一份 8 页的文档。
比如你的情况,统计Contents
的个数怎么样?我想当 Google Document 通过使用 Google Apps Script 检索为 blob 转换为 PDF 数据时,可以使用此方法。当这反映到您的脚本中时,它会变成如下。
修改后的脚本:
发件人:
var pages = parseInt(data.match(/ \/N (\d+) /)[1], 10);
收件人:
var pages = data.match(/\/Contents/g).length;
和
var pages = [...data.matchAll(/\/Contents/g)].length;
注:
- 如果上面的修改不能使用,我认为像https://www.convertapi.com/这样的外部API可能对直接实现你的目标有用。
参考文献:
我需要获取 google 文档的页数并且遇到了以下代码
function getNumPages() {
var blob = DocumentApp.getActiveDocument().getAs("application/pdf");
var data = blob.getDataAsString();
var pages = parseInt(data.match(/ \/N (\d+) /)[1], 10);
Logger.log("pages = " + pages);
return pages;
}
当 运行 但是我在第 4 行收到以下错误
TypeError: Cannot read property '1' of null
当我记录它输出的数据变量时
%PDF-1.4
%����
1 0 obj
<</Title (Reddit_Fin)
/Producer (Skia/PDF m92 Google Docs Renderer)>>
endobj
3 0 obj
<</ca 1
/BM /Normal>>
endobj
5 0 obj
<</Filter /FlateDecode
/Length 548>> stream
x��UQk�0~ϯ��%[�
cp�}��lka�����s��H��]Y H�>�>����! ����ϐ-8�~�>��j�B�����>z��w�>p�9�yx���<�&J�d�Q2��K~
���fm|{���4�>���/1��
这是一份 8 页的文档。
比如你的情况,统计Contents
的个数怎么样?我想当 Google Document 通过使用 Google Apps Script 检索为 blob 转换为 PDF 数据时,可以使用此方法。当这反映到您的脚本中时,它会变成如下。
修改后的脚本:
发件人:
var pages = parseInt(data.match(/ \/N (\d+) /)[1], 10);
收件人:
var pages = data.match(/\/Contents/g).length;
和
var pages = [...data.matchAll(/\/Contents/g)].length;
注:
- 如果上面的修改不能使用,我认为像https://www.convertapi.com/这样的外部API可能对直接实现你的目标有用。