Skip to content

Instantly share code, notes, and snippets.

View estevecastells's full-sized avatar
🎯

Esteve Castells estevecastells

🎯
View GitHub Profile
@estevecastells
estevecastells / script.js
Last active January 21, 2025 14:47
Use Google Gemini API in Spreadsheets
/**
* Generate content using the Gemini API with a hardcoded API key.
* @param {string} prompt - The text prompt to generate content.
* @return {string} The generated text from the API.
*/
function generateGeminiContent(prompt) {
const API_KEY = 'API_KEY'; // Replace with your actual API key
const API_URL = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-001:generateContent?key=' + API_KEY;
const requestBody = {
/**
* Configuration object for API settings
*/
const CONFIG = {
ANTHROPIC: {
API_KEY: 'API_KEY', // Replace with your Anthropic API key
URL: 'https://api.anthropic.com/v1/messages',
VERSION: '2023-06-01'
},
GEMINI: {
@estevecastells
estevecastells / script.js
Created July 31, 2024 21:30
Reverse proxy + Redirect GSC Live Test explorer
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
// Serve robots.txt file
if (url.pathname === '/robots.txt') {
return new Response('User-agent: *\nDisallow: ', {
@estevecastells
estevecastells / script.js
Created August 17, 2024 16:06
Use Anthropic's Claude API via Google Spreadsheets with AppScript
// REMINDER: Replace YOUR_API_KEY with your actual Anthropic API key
const ANTHROPIC_API_KEY = 'YOUR_API_KEY';
const ANTHROPIC_API_URL = 'https://api.anthropic.com/v1/messages';
/**
* Generates a response using Claude via the Anthropic API.
*
* @param {string} prompt - The input prompt for Claude.
* @return {string} The generated response from Claude.
@estevecastells
estevecastells / script.js
Last active August 13, 2024 11:46
Use OpenAI API in a Google Spreadsheets as an Apps Script function
function queryOpenAIChatCompletion(userMessage) {
var apiKey = 'API_KEY'; // Replace with your actual API key
var url = 'https://api.openai.com/v1/chat/completions';
var payload = {
model: "gpt-4o-mini",
messages: [
{"role": "user", "content": userMessage}
],
temperature: 0.4,
- Be highly organized.
- Suggest proactive solutions and anticipate my needs.
- Treat me as an expert in all subject matter.
- Be accurate and thorough; mistakes erode my trust.
- Provide detailed explanations; I appreciate lots of detail.
- Value good arguments over authorities; the source is irrelevant.
- Consider new technologies and contrarian ideas.
- High levels of speculation or prediction are fine; just flag it.
- Recommend only the highest-quality, meticulously designed products.
- Recommend products from all over the world; location is irrelevant.
@estevecastells
estevecastells / script.js
Last active July 8, 2024 13:58
Fetch URL to see if a link exists in given URL
function checkLink(url, domain) {
try {
var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
var content = response.getContentText();
// Create a regular expression to match links to the specified domain
var regex = new RegExp('href=["\']https?:\/\/(www\.)?' + domain.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i');
// Check if the content contains a link matching the regex
return regex.test(content);
javascript: (function () { var titulos = document.querySelectorAll(".FAxxKc, .yzifAd, .WBi6vc, .I0UMhf"); titulos.forEach(titulo => { titulo.parentElement.parentElement.style.filter = 'blur(5px)'; });})();
@estevecastells
estevecastells / news_schema_visualised.js
Last active January 19, 2024 22:18
News Schema Visualised
javascript:(function() {
var schemas = document.querySelectorAll('script[type="application/ld+json"]');
var newsSchema = null;
schemas.forEach(function(schema) {
var json = JSON.parse(schema.innerText);
if (json['@type'] === 'NewsArticle') {
newsSchema = json;
}
});
if (newsSchema) {
javascript:(function()%7B window.open(%27https://www.semrush.com/info/%27%2Blocation.host)%7D)()%3B