Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将谷歌的每张幻灯片转换为PDF和JPG格式? 谷歌应用程序脚本 我想为谷歌幻灯片文件(包含文字和图形的普通幻灯片)的每张幻灯片创建PDF文件 我回顾了过去的问题,找到了一个生成PDF文件的解决方案,但将幻灯片作为图像(我需要能够在这些PDF中搜索单词) 另一个解决方案应用于转换电子表格->PDF,但它也不适用于我的案例_Javascript_Google Apps Script_Google Slides - Fatal编程技术网

Javascript 如何将谷歌的每张幻灯片转换为PDF和JPG格式? 谷歌应用程序脚本 我想为谷歌幻灯片文件(包含文字和图形的普通幻灯片)的每张幻灯片创建PDF文件 我回顾了过去的问题,找到了一个生成PDF文件的解决方案,但将幻灯片作为图像(我需要能够在这些PDF中搜索单词) 另一个解决方案应用于转换电子表格->PDF,但它也不适用于我的案例

Javascript 如何将谷歌的每张幻灯片转换为PDF和JPG格式? 谷歌应用程序脚本 我想为谷歌幻灯片文件(包含文字和图形的普通幻灯片)的每张幻灯片创建PDF文件 我回顾了过去的问题,找到了一个生成PDF文件的解决方案,但将幻灯片作为图像(我需要能够在这些PDF中搜索单词) 另一个解决方案应用于转换电子表格->PDF,但它也不适用于我的案例,javascript,google-apps-script,google-slides,Javascript,Google Apps Script,Google Slides,函数autoFlyerGenerator(){ const name_file=“file_name”; //谷歌幻灯片中的模板文件 const ppt_file=DriveApp.getFileById(###幻灯片###); //临时文件夹,用于存储临时幻灯片文件 const temp_folder=DriveApp.getFolderById(##temp#folder_ID#); //PDF文件夹 const pdf_folder=DriveApp.getFolderById(###pd

函数autoFlyerGenerator(){
const name_file=“file_name”;
//谷歌幻灯片中的模板文件
const ppt_file=DriveApp.getFileById(###幻灯片###);
//临时文件夹,用于存储临时幻灯片文件
const temp_folder=DriveApp.getFolderById(##temp#folder_ID#);
//PDF文件夹
const pdf_folder=DriveApp.getFolderById(###pdf#folder_ID#);
//我当前的电子表格
const ss=SpreadsheetApp.getActive();
常量值=ss.getDataRange().getValues();
const temp_ppt=ppt_file.makeCopy(temp_文件夹).setName(name_文件);
const open_temp_ppt=SlidesApp.openById(temp_ppt.getId());
const slides=open_temp_ppt.getSlides();
//第一个for循环遍历所有行(不带标题)
//第二个for循环遍历所有列
对于(var index=0;index
更新
  • 我忘了提到Google幻灯片文件的页面设置大小与默认页面设置大小不同
  • 这个问题的第一个答案解决了生成PDF文件的问题,但是它不考虑幻灯片的大小。

    • 我相信你的目标如下

      • 您希望将Google幻灯片的每个页面导出为每个PDF文件
      • 您希望使用谷歌应用程序脚本实现这一点
      在这种情况下,下面的流程如何

    • 从源Google幻灯片中检索所有幻灯片
    • 创建一个临时的谷歌幻灯片
    • 将每个页面导出为PDF文件
    • 删除临时谷歌幻灯片
    • 当此流反映到脚本时,它将变为如下所示

      示例脚本: 请将以下脚本复制并粘贴到谷歌幻灯片的脚本编辑器中,然后运行函数
      myFunction
      。这样,脚本就可以运行了

      function myFunction() {
        const folderId = "###"; // Please set the folder ID you want to put the exported PDF files.
      
        // 1. Retrieve all slides from the source Google Slides.
        const slide = SlidesApp.getActivePresentation();
        const srcSlides = slide.getSlides();
      
        // 2. Create a temporal Google Slides.
        let temp = SlidesApp.create("temp");
        const id = temp.getId();
        const file = DriveApp.getFileById(id);
        const folder = DriveApp.getFolderById(folderId);
      
        // 3. Export each page as a PDF file.
        srcSlides.forEach((s, i) => {
          temp.appendSlide(s);
          temp.getSlides()[0].remove();
          temp.saveAndClose();
          folder.createFile(file.getBlob().setName(`page_${i + 1}.pdf`));
          temp = SlidesApp.openById(id);
        });
      
        // 4. Remove the temporal Google Slides.
        file.setTrashed(true);
      }
      
      • 在本例中,每个PDF文件的文件名类似于
        page_1.PDF
        page_2.PDF
      注:
      • 从标题中,如果要将每张幻灯片导出为每个JPEG文件而不是PDF文件,还可以使用以下示例脚本。在这种情况下,将使用幻灯片API。因此,在运行脚本之前

        • 在这种情况下,每个JPEG文件的文件名类似于
          page_1.jpg
          page_2.jpg
      参考资料:
      补充: 从以下OP的回复中


      我的幻灯片文件的页面设置与默认页面设置不同,因此在应用代码时,生成的PDF文件以默认大小结束,从而生成扭曲的文件。我怎样才能解决这个问题


      事实上,这是我的错。我的意思是,我原来的谷歌幻灯片文件有一个不同的页面设置(比如说14 x 18厘米)。代码正常,但生成的PDF文件具有幻灯片的默认页面设置

      从上面的回复来看,页面大小似乎不是默认值。在这种情况下,我建议使用原始谷歌幻灯片的页面大小。示例脚本如下所示

      示例脚本:
      我的幻灯片文件的页面设置与默认页面设置不同,因此在应用代码时,生成的PDF文件以默认大小结束,从而生成扭曲的文件。“我该怎么说呢?”乔纳桑迪亚斯谢谢你的回答。给您带来不便,我深表歉意。从您的回复和更新的问题中,我可以理解您最初的问题。但是关于你的第二个问题,不幸的是,我不能理解。尤其是,我无法理解
      提供扭曲文件的情况。我为我糟糕的英语水平道歉。那么,你能提供谷歌幻灯片样本来复制你的问题吗?通过这个,我想确认一下。事实上,这是我的错。我的意思是,我原来的谷歌幻灯片文件有一个不同的页面设置(比如说14 x 18厘米)。代码正常,但生成的PDF文件具有幻灯片的默认页面设置@JonathanDiaz感谢您回复并提供谷歌幻灯片示例。从您的补充信息中,我可以正确理解您当前的问题。所以我又添加了一个示例脚本。你能确认一下吗?如果这不是您所期望的结果,我向您道歉。@JonathanDiaz感谢您的回复和测试。我很高兴你的问题解决了。也谢谢你。
      
        function myFunction() {
          const folderId = "###"; // Please set the folder ID you want to put the exported PDF files.
      
          // 1. Retrieve all slides from the source Google Slides.
          const slide = SlidesApp.getActivePresentation();
          const id = slide.getId();
          const srcSlides = slide.getSlides();
      
          // 2. Export each page as a JPEG file.
          const folder = DriveApp.getFolderById(folderId);
          srcSlides.forEach((s, i) => {
            const url = Slides.Presentations.Pages.getThumbnail(id, s.getObjectId(), {"thumbnailProperties.mimeType": "PNG"}).contentUrl;
            const blob = UrlFetchApp.fetch(url).getAs(MimeType.JPEG);
            folder.createFile(blob.setName(`page_${i + 1}.jpg`));
          });
        }
      
      function myFunction2() {
        const folderId = "###"; // Please set the folder ID you want to put the exported PDF files.
      
        // 1. Retrieve all slides from the source Google Slides.
        const slide = SlidesApp.getActivePresentation();
        const srcId = slide.getId();
        const srcSlides = slide.getSlides();
      
        // 2. Create a temporal Google Slides.
        const file = DriveApp.getFileById(srcId).makeCopy("temp");
        const id = file.getId();
        let temp = SlidesApp.openById(id);
        temp.getSlides().forEach((e, i) => {
          if (i != 0) e.remove();
        });
        const folder = DriveApp.getFolderById(folderId);
      
        // 3. Export each page as a PDF file.
        srcSlides.forEach((s, i) => {
          temp.appendSlide(s);
          temp.getSlides()[0].remove();
          temp.saveAndClose();
          folder.createFile(file.getBlob().setName(`page_${i + 1}.pdf`));
          temp = SlidesApp.openById(id);
        });
      
        // 4. Remove the temporal Google Slides.
        file.setTrashed(true);
      }