使用 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可能对直接实现你的目标有用。

参考文献: