使用谷歌应用程序脚本从谷歌文档中获取页数

时间:2021-05-29 04:19:51

标签: google-apps-script google-docs

我需要获取 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 页的文档。

1 个答案:

答案 0 :(得分:1)

例如,在您的情况下,如何计算 Contents 的数量?我认为当通过使用 Google Apps Script 检索为 blob 将 Google Document 转换为 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 可能有助于直接实现您的目标。

参考: