Header section within Google Docs

坚强是说给别人听的谎言 提交于 2020-06-23 07:36:11

问题


So, i have ammended some code to add the description field of a file search to a spreadsheet, which is potentially useful for me. However, ideally I want to conduct a file search and then add the details within the header section of a google document to a spreadsheet column.

The problem line I assume is: var header= file.getHeader();

How do I query the search performed to return the contents of the document header? Can anyone help with this please?

function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var searchMenuEntries = [ {name: "Search in all files", functionName:  "search"}];
ss.addMenu("Search Google Drive", searchMenuEntries);
}
function search() {

// Prompt the user for a search term

var searchTerm = Browser.inputBox("Enter the search parameters");

// Get the active spreadsheet and the active sheet

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();


// Search the files in the user's Google Drive for the search term
// See documentation for search parameters you can use
// https://developers.google.com/apps-script/reference/drive/drive-app#searchFiles(String)


 var files = DriveApp.searchFiles("fullText contains  '"+searchTerm.replace("'","\'")+"'");
 var output = [];

 while (files.hasNext()) {
 var file = files.next();
 var fileId = file.getId();

 var fileType = file.getMimeType();

 if (fileType === MimeType.GOOGLE_DOCS) {
 var doc = DocumentApp.openById(fileId);

 var name = doc.getName();
 var header= doc.getHeader().getText();
 var url = doc.getUrl();

 // Set up the spreadsheet to display the results

var headers = [["File ID", "File Type", "File Name", "Header", "URL"]];
sheet.clear();
sheet.getRange("A1:E1").setValues(headers);


 // push the file details to our output array (essentially pushing a row of data)

output.push([ fileId, fileType, name, header, url]);
}


// write data to the sheet

sheet.getRange(2, 1, output.length, 5).setValues(output);
}
}

回答1:


Manually insert a header into a document, then open the document and get the ID out of the url. Then run some test code:

function getHeader() {
  var doc = DocumentApp.openById('your ID here');
  var hdear = doc.getHeader();

  Logger.log('hdear: ' + hdear);
};

Run the code from the script editor, then in the VIEW menu, open the LOGS. You can also run the code line by line with the debugger.

In the log, it should show "HeaderSection"


You should use DriveApp to get a list of files, but then you'll need to use DocumentApp to get the header.

function myFunction() {
  var files = DriveApp.searchFiles("fullText contains '"+searchTerm.replace("'","\'")+"'");
  var output = [];

  while (files.hasNext()) {
    var file = files.next();
    var fileId = file.getId();

    var fileType = file.getMimeType();

    if (fileType === MimeType.GOOGLE_DOCS) {
      var doc = DocumentApp.openById(fileId);

      var name = doc.getName();
      var header= doc.getHeader().getText();
      var url = doc.getUrl();

      output.push(name);
      output.push(fileType);
      output.push(header);
      output.push(url);
    };
  };

  var outerArray = [];
  outerArray.push(output);
  // write data to the sheet
  sheet.getRange(2, 1, outerArray.length, output.length).setValues(outerArray);
};


来源:https://stackoverflow.com/questions/30196408/header-section-within-google-docs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!