ids busqueda de google simultáneos
Publicado por Miguel (1 intervención) el 11/07/2024 11:12:41
Hola, comienzo diciendo que tengo 0 experiencia con esto, y estoy empezando. Disculpadme. Estoy implementando un sencillo script para que me devuelva, utilizando los ids de la búsqueda programable de google una busqueda u otra en función del fabricante y un tipo seleccionado,
Hay dos listas desplegables primero, con el fabricante, y en función del elegido se despliega la siguiente con sus tipos.
si se elige el fabricante A, ofrece una busqueda con un ID marcado, si se selecciona el fabricante B ofrece otra busqueda pero esta es doble con dos IDs, y una de ellas lo traduce al aleman antes de la busqueda para hacerla en aleman...
Aunque con el A funciona bastante bien, con el B muchas veces me salen las mismas busquedas, sin utilizar los dos IDs indicados, y si le sigo dando al boton de search, va cambiando los resutlados, a veces todo en español, otras veces todo en aleman, y otras sale bien en aleman y español que es lo que me interesa. os paso el código, por si me podéis echar una mano a identificar el problema,
Muchas gracias,
<div class="search-container">
<label for="fabricante">Fabricante</label>
<select id="fabricante" name="fabricante" onchange="populateTipos()">
<option value="">Select Fabricante</option>
<option value="B">B</option>
<option value="A ">A </option>
</select>
</div>
<div class="search-container">
<label for="tipo">Tipo</label>
<select id="tipo" name="tipo">
<option value="">Select Tipo</option>
</select>
</div>
<div class="search-container">
<label for="extraText">Additional Text</label>
<input type="text" id="extraText" placeholder="Enter additional text" onkeypress="checkEnter(event)" />
</div>
<div class="search-container">
<button onclick="performSearch()">Search</button>
</div>
<div class="search-results-container">
<div class="search-results-column">
<div class="gcse-searchresults" id="searchresults1"></div>
</div>
<div class="search-results-column">
<div class="gcse-searchresults" id="searchresults2"></div>
</div>
</div>
<script>
var tipos = {
B: ["1", "2", "3"],
'A': ["4", "5", "6"]
};
var cseIds = {
'A': 'd1c505ecb5da14bXX',
B: {
spanish: 'a518d8db7c8334eYY',
german: '342daa766f4b74aZZ'
}
};
function populateTipos() {
var fabricanteSelect = document.getElementById('fabricante');
var tipoSelect = document.getElementById('tipo');
var selectedFabricante = fabricanteSelect.value;
tipoSelect.innerHTML = '<option value="">Select Tipo</option>';
if (selectedFabricante) {
tipos[selectedFabricante].forEach(function(tipo) {
var option = document.createElement('option');
option.value = tipo;
option.textContent = tipo;
tipoSelect.appendChild(option);
});
}
}
function loadGoogleCSE(cx, divId, query, gname) {
var gcseScript = document.createElement('script');
gcseScript.type = 'text/javascript';
gcseScript.async = true;
gcseScript.src = 'https://cse.google.com/cse.js?cx=' + cx;
gcseScript.onload = function() {
google.search.cse.element.render({
div: divId,
tag: 'searchresults-only',
gname: gname // Unique identifier for the search engine
});
google.search.cse.element.getElement(gname).execute(query);
};
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcseScript, s);
}
function performSearch() {
var fabricante = document.getElementById('fabricante').value;
var tipo = document.getElementById('tipo').value;
var extraText = document.getElementById('extraText').value;
if (fabricante) {
var searchResultsElement1 = document.getElementById('searchresults1');
var searchResultsElement2 = document.getElementById('searchresults2');
searchResultsElement1.innerHTML = ''; // Clear previous results
searchResultsElement2.innerHTML = ''; // Clear previous results
var query1 = fabricante + " " + tipo + " " + extraText;
if (fabricante === 'B') {
loadGoogleCSE(cseIds.B.spanish, 'searchresults1', query1, 'B_spanish');
var query2 = fabricante + " " + tipo + " " + translateToGerman(extraText);
loadGoogleCSE(cseIds.B.german, 'searchresults2', query2, 'B_german');
} else {
loadGoogleCSE(cseIds[fabricante], 'searchresults1', query1, 'A');
searchResultsElement2.innerHTML = ''; // Clear second column for A
}
}
}
function translateToGerman(text) {
// De momento, devolvemos el texto original
return text;
}
function checkEnter(event) {
if (event.key === 'Enter') {
performSearch(); // Perform search on Enter key press
}
}
</script>
</body>
</html>
Hay dos listas desplegables primero, con el fabricante, y en función del elegido se despliega la siguiente con sus tipos.
si se elige el fabricante A, ofrece una busqueda con un ID marcado, si se selecciona el fabricante B ofrece otra busqueda pero esta es doble con dos IDs, y una de ellas lo traduce al aleman antes de la busqueda para hacerla en aleman...
Aunque con el A funciona bastante bien, con el B muchas veces me salen las mismas busquedas, sin utilizar los dos IDs indicados, y si le sigo dando al boton de search, va cambiando los resutlados, a veces todo en español, otras veces todo en aleman, y otras sale bien en aleman y español que es lo que me interesa. os paso el código, por si me podéis echar una mano a identificar el problema,
Muchas gracias,
<div class="search-container">
<label for="fabricante">Fabricante</label>
<select id="fabricante" name="fabricante" onchange="populateTipos()">
<option value="">Select Fabricante</option>
<option value="B">B</option>
<option value="A ">A </option>
</select>
</div>
<div class="search-container">
<label for="tipo">Tipo</label>
<select id="tipo" name="tipo">
<option value="">Select Tipo</option>
</select>
</div>
<div class="search-container">
<label for="extraText">Additional Text</label>
<input type="text" id="extraText" placeholder="Enter additional text" onkeypress="checkEnter(event)" />
</div>
<div class="search-container">
<button onclick="performSearch()">Search</button>
</div>
<div class="search-results-container">
<div class="search-results-column">
<div class="gcse-searchresults" id="searchresults1"></div>
</div>
<div class="search-results-column">
<div class="gcse-searchresults" id="searchresults2"></div>
</div>
</div>
<script>
var tipos = {
B: ["1", "2", "3"],
'A': ["4", "5", "6"]
};
var cseIds = {
'A': 'd1c505ecb5da14bXX',
B: {
spanish: 'a518d8db7c8334eYY',
german: '342daa766f4b74aZZ'
}
};
function populateTipos() {
var fabricanteSelect = document.getElementById('fabricante');
var tipoSelect = document.getElementById('tipo');
var selectedFabricante = fabricanteSelect.value;
tipoSelect.innerHTML = '<option value="">Select Tipo</option>';
if (selectedFabricante) {
tipos[selectedFabricante].forEach(function(tipo) {
var option = document.createElement('option');
option.value = tipo;
option.textContent = tipo;
tipoSelect.appendChild(option);
});
}
}
function loadGoogleCSE(cx, divId, query, gname) {
var gcseScript = document.createElement('script');
gcseScript.type = 'text/javascript';
gcseScript.async = true;
gcseScript.src = 'https://cse.google.com/cse.js?cx=' + cx;
gcseScript.onload = function() {
google.search.cse.element.render({
div: divId,
tag: 'searchresults-only',
gname: gname // Unique identifier for the search engine
});
google.search.cse.element.getElement(gname).execute(query);
};
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcseScript, s);
}
function performSearch() {
var fabricante = document.getElementById('fabricante').value;
var tipo = document.getElementById('tipo').value;
var extraText = document.getElementById('extraText').value;
if (fabricante) {
var searchResultsElement1 = document.getElementById('searchresults1');
var searchResultsElement2 = document.getElementById('searchresults2');
searchResultsElement1.innerHTML = ''; // Clear previous results
searchResultsElement2.innerHTML = ''; // Clear previous results
var query1 = fabricante + " " + tipo + " " + extraText;
if (fabricante === 'B') {
loadGoogleCSE(cseIds.B.spanish, 'searchresults1', query1, 'B_spanish');
var query2 = fabricante + " " + tipo + " " + translateToGerman(extraText);
loadGoogleCSE(cseIds.B.german, 'searchresults2', query2, 'B_german');
} else {
loadGoogleCSE(cseIds[fabricante], 'searchresults1', query1, 'A');
searchResultsElement2.innerHTML = ''; // Clear second column for A
}
}
}
function translateToGerman(text) {
// De momento, devolvemos el texto original
return text;
}
function checkEnter(event) {
if (event.key === 'Enter') {
performSearch(); // Perform search on Enter key press
}
}
</script>
</body>
</html>
Valora esta pregunta


0