Show me a function I can add to this code to check if one or more of the Interactable Elements: are Type: textarea. If there is one or more textarea, look for the word "zip", "Zip", "age", "Age", "year", and "Year"  in the Visible Text on the web page and consider them keywords. If more than one of these keywords appear in the Visible Text on the web page, account for the order they appear and associate them with the textareas in the order they appear in the Interactable Elements. If only one appears associate it with the textarea in the Interactable Elements. Any textarea associated with "zip" or "Zip" should be filled in with the string "44833". Any textarea associated with "age" or "Age" should be filled in with the string "40". Any textarea associated with "year" or "Year" should be filled with the string "1983".   Here is the code to ammend:  

let v = "";

var visibleText = "";

Array.from(document.querySelectorAll('*'))
  .filter(element => {
    var computedStyle = window.getComputedStyle(element);
    return (
      element.offsetHeight > 0 &&
      element.offsetWidth > 0 &&
      computedStyle.display !== 'none' &&
      computedStyle.visibility !== 'hidden' &&
      element.tagName !== 'SCRIPT' &&
      element.tagName !== 'STYLE'
    );
  })
  .forEach(element => {
    var textContent = element.innerText.trim();
    if (textContent !== '' && !visibleText) {
      visibleText = textContent; // Store only the first visible text
    }
  });

var interactableElements = document.querySelectorAll('input:not([type="hidden"]), button, textarea, select, a');

var output = "";
var count = 0;

var firstElements = {};

for (var index = 0; index < interactableElements.length; ++index) {
  var element = interactableElements[index];
  var elementId = element.id;
  var elementType = element.type;
  var elementClass = element.className;

  if (!element.hidden && elementType) {
    count++;
    if (elementType === "submit" || elementType === "button") {
      if (!isExcluded(element)) {
        element.addEventListener("click", function() {
          console.log(`Clicked element with ID: ${elementId}`);
        });
        element.click();
      }
    } else {
      var tagName = element.tagName.toLowerCase();
      if (!(tagName in firstElements) && !isExcluded(element)) {
        firstElements[tagName] = true;
        element.click();
      }
    }
    var listItem = `${count}. Element ID: ${elementId}, Input Type: ${elementType}, Class: ${elementClass}`;

    var associatedLabel = document.querySelector(`label[for="${elementId}"]`);
    if (associatedLabel) {
      var labelText = associatedLabel.innerText.trim();
      listItem += `, Label Text: ${labelText}`;
    }

    output += listItem + "\n";
  }
}

function isExcluded(element) {
  var excludedKeywords = ['back', 'prev', 'previous'];
  var elementId = element.id;
  var elementType = element.type;
  var elementClass = element.className;
  return excludedKeywords.some(keyword => {
    return elementId.includes(keyword) || elementClass.includes(keyword) || element.getAttributeNames().some(attrName => {
      return element.getAttribute(attrName).toLowerCase().includes(keyword);
    });
  }) || elementType === "hidden";
}

var logStatement = `Visible Text on the web page:\n${visibleText}\n\nInteractable Elements:\n${output}`;

v = logStatement;

console.log(logStatement);