2016-11-21 8 views

答えて

1

APIがない場合、私はこれが良い方法だとは思わないでしょう。実際には恐ろしいです。しかしここにそれがあります。あなたが絶対にそれをしなければならなかったら。それはあまりにも薄すぎる可能性があります。

手順は以下のとおりです。

  1. PowerPointのエクスポートが
  2. ファイル.PPTXとしてドライブのAPIを経由して、プレゼンテーション、ファイルを解凍します - それは中XMLファイルとディレクトリ構造を含むzipファイルです
  3. スピーカーノートファイルを特定し、必要に応じて処理します(たとえば、すべてのテキストを抽出するか、XMLなどで作業します)。

醜いですか?ここでAppsスクリプトの例です:

  1. は、スクリプト(リソース>高度なGoogleのサービス)内には、Advanced ServicesでドライブのAPIを有効にします。

    function example() { 
        // Print out the speaker notes 
        Logger.log(getNotes('123abc......asd'); 
    } 
    
    // Returns an array of strings, one string per slide 
    // representing the speaker notes. 
    function getNotes(presentationId) { 
        //DriveApp.createFile(); 
        var notesRegex = /ppt\/notesSlides\/notesSlide\d+\.xml/; 
    
        var url = 'https://www.googleapis.com/drive/v2/files/' + presentationId + 
        '/export?mimeType=application%2Fvnd.openxmlformats-officedocument.presentationml.presentation'; 
        var options = { 
        headers: { 
         Authorization : 'Bearer ' + ScriptApp.getOAuthToken() 
        } 
        }; 
        var response = UrlFetchApp.fetch(url, options); 
    
        var zipBlob = Utilities.newBlob(response.getContent(), 'application/zip'); 
        var data = Utilities.unzip(zipBlob); 
    
        var notes = []; 
        for (var i = 0; i < data.length; i++) { 
        if (notesRegex.test(data[i].getName())) { 
    
         // Example simply extracts text from speaker notes 
         // You could do something more complex. 
         notes.push(extractTextFromXml(data[i].getDataAsString())); 
        } 
        } 
        return notes; 
    } 
    
    function extractTextFromXml(xml) { 
        var doc = XmlService.parse(xml); 
        var root = doc.getRootElement(); 
        var ns = root.getNamespace('a'); 
    
        var text = []; 
    
        function walkNode(node) { 
        if (node.getText()) { 
         text.push(node.getText()); 
        } 
        var children = node.getChildren(); 
        if (children.length) { 
         children.forEach(function(child) { 
         walkNode(child); 
         }); 
        } 
        } 
        walkNode(root); 
        return text.join('\n'); 
    } 
    
関連する問題