Pages

Se afișează postările cu eticheta google. Afișați toate postările
Se afișează postările cu eticheta google. Afișați toate postările

luni, 28 iulie 2025

News : Google Apps Script - add link to google document.

Today, I tested how to add a link to google drive document.
I tried some issues with some source code and this issue not work !
Let's see some simple examples:
/**
 * Creates a new Google Docs document with a test link.
 * This script is intended to verify the functionality of setLinkUrl and document placement in a folder.
 */
function createDocumentWithTestLink() {
  const docTitle = "Document Test Link GAS";
  const doc = DocumentApp.create(docTitle); // Creates the initial document in My Drive
  const body = doc.getBody(); // Gets the body of the document to add content

  // Add a paragraph of text to the document body
  const paragraph = body.appendParagraph("This is a test link to Google.");

  // Define the test URL (ensure it's a complete URL with protocol, e.g., https://)
  const testUrl = "https://www.google.com";

  // Set the hyperlink for the entire paragraph
  try {
    paragraph.setLinkUrl(testUrl); // Applies the URL as a hyperlink to the paragraph
    Logger.log(`Link "${testUrl}" was successfully set on the paragraph.`);
  } catch (e) {
    Logger.log(`Error setting the link: ${e.message}`); // Logs any error during link setting
  }

  // --- NEW: Move the document to the same folder as the spreadsheet ---
  try {
    const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // Gets the currently active spreadsheet
    const spreadsheetFile = DriveApp.getFileById(spreadsheet.getId()); // Gets the Drive file object for the spreadsheet
    
    // Get the parent folder(s) of the spreadsheet. Assumes there is at least one parent folder.
    // If the spreadsheet is in the root of My Drive, this might require different handling.
    const parentFolders = spreadsheetFile.getParents(); // Gets an iterator for parent folders
    if (parentFolders.hasNext()) { // Checks if there is at least one parent folder
      const parentFolder = parentFolders.next(); // Gets the first parent folder
      DriveApp.getFileById(doc.getId()).moveTo(parentFolder); // Moves the newly created document to the parent folder
      Logger.log(`Document "${docTitle}" was moved to folder: ${parentFolder.getName()} (${parentFolder.getUrl()})`);
    } else {
      // If the spreadsheet has no parent folder (i.e., it's in My Drive root), the document stays in root.
      Logger.log(`Spreadsheet "${spreadsheet.getName()}" has no parent folder. The document remains in the root.`);
    }
  } catch (e) {
    Logger.log(`Error moving the document to the folder: ${e.message}`); // Logs any error during folder move
  }
  // ------------------------------------------------------------------

  // Get the URL of the created document and log it
  const docUrl = doc.getUrl();
  Logger.log(`Document was created: ${docUrl}`);

  // Display a notification to the user (will appear in the script editor or logs)
  SpreadsheetApp.getUi().alert('Document created', `A new document with a test link has been created. Check the logs for the document URL and its folder.`, SpreadsheetApp.getUi().ButtonSet.OK);
}

/**
 * Adds an option to the "Custom Menu" to run the test function.
 * This function is automatically called when the Google Sheet is opened.
 */
function onOpen() {
  SpreadsheetApp.getUi() // Gets the user interface object for the spreadsheet
    .createMenu('Custom Menu') // Creates a new custom menu named "Custom Menu"
    .addItem('Create Test Link Document', 'createDocumentWithTestLink') // Adds an item to the menu that calls createDocumentWithTestLink
    .addToUi(); // Adds the custom menu to the spreadsheet's UI
}

sâmbătă, 26 iulie 2025

News : Create your mail from google document!

Now, you can write in your document on google drive and send as mail.
First, click on edge document area to see templates buttons.Click the button Email draft, then will see an template for mail in the document.
You can click to star icon to star your document.
If you lost the visibility of these template buttons, just write something the delete all with backspace key.
This action will make template buttons: Templates, Metting notes, Email draft, More.
Fill with your content for mail, then press the blue M mail button.
This will open an gmail dialog with your data from document, then sent your mail!

vineri, 25 iulie 2025

News : Google Patents source

Google Patents is a free, intuitive tool from Google designed to search and browse patents and patent applications from around the globe. It pulls together information from major patent offices like the USPTO, EPO, and WIPO, among others, creating a centralized hub for patent data. Using Google’s robust search engine, users can locate patents by entering keywords, patent numbers, inventor names, or other specific terms. The platform provides in-depth access to patent documents, including detailed technical descriptions, legal claims, illustrations, and translated texts, making it a vital resource for inventors, researchers, and companies.
Its standout features include powerful search filters, automatic translations for patents in foreign languages, and a straightforward interface for exploring patent details. While it doesn’t handle patent filings, Google Patents is an essential resource for uncovering prior art, studying existing technologies, or diving into innovations
Today, I found this great sci-fi knife design of the Collapsing Blade by Joseph Varner on the google patents website:

News : Introducing Opal.

Discover Opal, a new experimental tool that helps you compose prompts into dynamic, multi-step mini-apps using natural language.
Opal removes the need for code, allowing users to build and deploy shareable AI apps with powerful features and seamless integration with existing Google tools.
Not works on my country : Opal is not available in your country yet
You can try this google tool on the official website.

luni, 30 iunie 2025

News : World’s Largest Hackathon presented by Bolt with the $1M+ in prizes.

... another project for this hackathon: World’s Largest Hackathon presented by Bolt
Build with AI for a shot at some of the $1M+ in prizes.
You can find my project on the official webpage.

vineri, 20 iunie 2025

News : YouTube Data Analysis Workflow - my hackathon project on devpost

Here I managed with difficulty, the internet and this old laptop are slow, but I uploaded the project for the Agent Development Kit Hackathon with Google Cloud ...
See my project on the official website.
Project submitted! Continue to edit your project until the hackathon deadline: June 23, 2025 at 08:00pm EDT.

joi, 19 iunie 2025

News : Google Apps Script - get products by region into new sheet.

... this is source code for search products on my region using google apps script:
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Ocazii Scraper')
    .addItem('Scrape placa-de-baza', 'scrapeProcess_placa_de_baza')
    .addToUi();
}

function scrapeProcess_placa_de_baza() {
  const url_placa_de_baza = "https://www.okazii.ro/componente-computere/placa-de-baza/?judete_lp=35&sort=pret_asc";
  let html;
  try {
    const response = UrlFetchApp.fetch(url_placa_de_baza);
    html = response.getContentText();
  } catch (error) {
    Logger.log("Error fetching HTML: " + error.message);
    return;
  }

  const itemRegex = /<div class="list-item[\s\S]*?<h2>[\s\S]*?<a[^>]+href="(.*?)"[^>]+title="(.*?)"[\s\S]*?<span class="prSup"><span>(\d+)<\/span>[\s\S]*?<span class="prList"><span>([\d,]+)<\/span>/g;

  const spreadsheetName = "placa_baza_200625";
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getSheetByName(spreadsheetName) || spreadsheet.insertSheet(spreadsheetName);

  // Adaugă headere dacă e un sheet nou
  if (sheet.getLastRow() === 0) {
    sheet.appendRow(["Data", "Titlu", "Href", "Pret", "Livrare"]);
  }

  const now = new Date();
  const formattedDate = Utilities.formatDate(now, SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "ddMMyy");

  let match;
  while ((match = itemRegex.exec(html)) !== null) {
    let [_, href, title, price, delivery] = match;
    delivery = delivery.replace(",", "."); // înlocuiește virgula pentru formatare numerica
    const row = [formattedDate, title, href, price, delivery];
    sheet.appendRow(row);
  }
}

miercuri, 21 mai 2025

News : tested GitHub repo on bolt and netlify !

I used in the past javascript with react and vite, but today I tested two web tools: bold and netlify - both online tools.
The first issue on bold was to use an repo from my secondary GitHub account catafest-work because on bolt account was set catafest.
I asked on discord and answer was simple one:
Use this in the URL area:
bolt.new/github.com/username/reponame
I used easy , works and bold make the default project with react and vite. I set the Gemini API key!
I ask to create a simple grapphic interface and works well.
This works well without any errors.
For deploy an application on web, the bolt give me an answer to netlify ...
I follow that answer and I have a full simple application online, see this website - catafest-gemini-ai.netlify.app.
I tested and works. See some screenshots from work area with these online tool:

vineri, 16 mai 2025

News : ... win $50,000 in cash prizes !

Well here's your chance to AND win $50,000 in cash prizes 💰
I'm excited to announce the launch of the Agent Development Kit Hackathon with hashtag#GoogleCloud! I've been leading an effort across product, engineering, and marketing and it's LIVE 🏁
Submissions are open from May 12, 2025 to June 23, 2025.
Learn more and register at: the official webpage.

miercuri, 16 aprilie 2025

News : Google Apps Script - add movies from website into new sheet.

This source code with GAScript add few movies from cinemagia website:
The commant the lines from the last post tutorial and use this source code.
This will add movies into separated sheet by date, see the source code:
  // try {
  //   const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  //   const currentDate = new Date();
  //   extractedData.forEach((movie, rowIndex) =&gt; {
  //     if (movie.title !== "N/A" && movie.image !== "N/A") {
  //       const imageFormula = `=IMAGE("${movie.image}")`;
  //       const rowIndexAdjusted = sheet.getLastRow() + 1;
  //       sheet.appendRow([currentDate, movie.title, imageFormula, movie.channel, movie.time]);
  //       sheet.setRowHeight(rowIndexAdjusted, 76); // Set row height to 330px
  //     }
  //   });
  //   Logger.log("Processed movies count: ", extractedData.length);
  // } catch (error) {
  //   Logger.log("Error adding data to spreadsheet: ", error.message);
  // }
  try {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const currentDate = new Date();
  
  // Formatăm data curentă pentru numele sheet-ului
  const formattedDate = Utilities.formatDate(currentDate, SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(), "yyyy-MM-dd");
  const sheetName = `Data-${formattedDate}`;
  
  // Verificăm dacă sheet-ul cu acest nume există deja
  let sheet = spreadsheet.getSheetByName(sheetName);
  if (!sheet) {
    // Creăm un nou sheet dacă nu există
    sheet = spreadsheet.insertSheet(sheetName);
  }
  
  extractedData.forEach((movie) =&gt; {
    if (movie.title !== "N/A" && movie.image !== "N/A") {
      const imageFormula = `=IMAGE("${movie.image}")`;
      const rowIndexAdjusted = sheet.getLastRow() + 1;
      sheet.appendRow([currentDate, movie.title, imageFormula, movie.channel, movie.time]);
      
      // Păstrăm formatarea originală pentru înălțimea rândurilor
      sheet.setRowHeight(rowIndexAdjusted, 76); 
    }
  });
} catch (error) {
  console.error("A apărut o eroare:", error.message);
}

sâmbătă, 29 martie 2025

News : Google Apps Script - add movies from website.

This source code with GAScript add few movies from cinemagia website:
This is the source code:
function scrapeProcessAndCleanUp() {
  const url = "https://www.cinemagia.ro/program-tv/filme-la-tv/filme-pro-tv,antena-1,tvr-1,prima-tv,diva,pro-cinema,film-cafe/azi/";
  
  let html;
  try {
    const response = UrlFetchApp.fetch(url);
    html = response.getContentText();
    Logger.log("Fetched HTML content length: ", html.length);
  } catch (error) {
    Logger.log("Error fetching HTML content: ", error.message);
    return;
  }

  let doc;
  try {
    doc = DocumentApp.create("Temporary HTML Content");
    doc.appendParagraph(html);
    doc.saveAndClose();
    Logger.log("Document created successfully with ID: ", doc.getId());
  } catch (error) {
    Logger.log("Error creating/saving document: ", error.message);
    return;
  }

  let text;
  try {
    const document = DocumentApp.openById(doc.getId());
    text = document.getBody().getText();
    Logger.log("Document text content length: ", text.length);
  } catch (error) {
    Logger.log("Error opening document or extracting text: ", error.message);
    return;
  }

  const titles = [...text.matchAll(/&lt;li class="first"&gt;(.*?)&lt;\/li&gt;/g)];
  const images = [...text.matchAll(/&lt;img src="(https:\/\/static\.cinemagia\.ro\/img\/resize\/db\/movie.*?)"/g)];
  const channels = [...text.matchAll(/&lt;span class="r1"&gt;(.*?)&lt;\/span&gt;/g)];
  const times = [...text.matchAll(/&lt;span class="r2"&gt;(.*?)&lt;\/span&gt;/g)];
  Logger.log("Titles found: ", titles.length);
  Logger.log("Images found: ", images.length);
  Logger.log("Channels found: ", channels.length);
  Logger.log("Times found: ", times.length);


  const extractedData = titles.map((title, index) =&gt; {
    const image = images[index] ? images[index][1] : "N/A";
    const channel = channels[index] ? channels[index][1].trim() : "N/A";
    const time = times[index] ? times[index][1].trim() : "N/A";
    return {
      title: title[1].trim(),
      image: image,
      channel: channel,
      time: time
    };
  });
  try {
    const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    const currentDate = new Date();
    extractedData.forEach((movie, rowIndex) =&gt; {
      if (movie.title !== "N/A" && movie.image !== "N/A") {
        const imageFormula = `=IMAGE("${movie.image}")`;
        const rowIndexAdjusted = sheet.getLastRow() + 1;
        sheet.appendRow([currentDate, movie.title, imageFormula, movie.channel, movie.time]);
        sheet.setRowHeight(rowIndexAdjusted, 76); // Set row height to 330px
      }
    });
    Logger.log("Processed movies count: ", extractedData.length);
  } catch (error) {
    Logger.log("Error adding data to spreadsheet: ", error.message);
  }
}

marți, 25 martie 2025

News : Google Apps Script - find duplicate files in google drive.

For today, a simple GAScript source code to add into spreadsheet the duplicate files from Google drive.
This Google Apps Script finds duplicate files in Google Drive by comparing file sizes and optionally file types. It then displays the results in a spreadsheet with detailed information about each duplicate file. The script collects information about all files in Drive. Files are grouped by their size and optionally file type. Any group with more than one file is considered a set of duplicates These duplicate sets are displayed in the spreadsheet
Functions
  • checkDuplicatesInDrive(): Main function that searches your entire Google Drive for duplicates
  • checkDuplicatesInFolder(): Alternative function that searches a specific folder and its subfolders
  • findDuplicateFiles(): Core function that identifies duplicate files based on size and type
  • addDuplicatesToSheet(): Adds the found duplicates to a spreadsheet
I used artificial inteligence and this help me much ...
/**
 * Main function to check files in the root folder and add duplicates to the active spreadsheet
 */
function checkDuplicatesInDrive() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // Clear the sheet and set up headers
  sheet.clear();
  sheet.appendRow(["Group", "File Name", "Size", "Type", "File Path", "Date Created", "Last Updated", "URL"]);
  sheet.getRange(1, 1, 1, 8).setFontWeight("bold").setBackground("#f3f3f3");
  
  // Find all duplicates
  const duplicates = findDuplicateFiles(true);
  
  // Check if any duplicates were found
  if (Object.keys(duplicates).length === 0) {
    sheet.appendRow(["No duplicate files found"]);
    sheet.autoResizeColumns(1, 8);
    return;
  }
  
  // Add duplicates to the sheet
  addDuplicatesToSheet(duplicates, sheet);
  
  // Auto-resize columns
  sheet.autoResizeColumns(1, 8);
}

/**
 * Adds duplicate files to the specified sheet
 */
function addDuplicatesToSheet(duplicates, sheet) {
  let groupNumber = 1;
  let rowIndex = 2;
  let totalDuplicateFiles = 0;
  
  for (const key in duplicates) {
    const files = duplicates[key];
    totalDuplicateFiles += files.length;
    
    files.forEach((file, index) => {
      // Get file path
      const filePath = getFilePath(file.id);
      
      sheet.appendRow([
        groupNumber,
        file.name,
        formatFileSize(file.size),
        file.mimeType,
        filePath,
        file.dateCreated.toLocaleString(),
        file.lastUpdated.toLocaleString(),
        file.url
      ]);
      
      // Add hyperlink to the file URL
      sheet.getRange(rowIndex, 8).setFormula(`=HYPERLINK("${file.url}","Open File")`);
      
      rowIndex++;
    });
    
    groupNumber++;
  }
  
  // Add summary at the bottom - only if we have duplicates
  if (totalDuplicateFiles > 0) {
    sheet.appendRow(["SUMMARY"]);
    sheet.appendRow([`Found ${totalDuplicateFiles} duplicate files in ${groupNumber - 1} groups.`]);
  }
  
  return totalDuplicateFiles;
}

/**
 * Gets the file path for a given file ID
 */
function getFilePath(fileId) {
  try {
    const file = DriveApp.getFileById(fileId);
    const parents = file.getParents();
    
    if (parents.hasNext()) {
      const parent = parents.next();
      return getFolderPath(parent) + "/" + file.getName();
    } else {
      return "/" + file.getName();
    }
  } catch (e) {
    return "Path not available";
  }
}

/**
 * Gets the folder path for a given folder
 */
function getFolderPath(folder) {
  try {
    const parents = folder.getParents();
    
    if (!parents.hasNext()) {
      return "/" + folder.getName();
    }
    
    const parent = parents.next();
    return getFolderPath(parent) + "/" + folder.getName();
  } catch (e) {
    return "/Unknown";
  }
}

/**
 * Finds duplicate files in Google Drive based on file size and optionally file type.
 * @param {boolean} considerFileType Whether to consider file type when finding duplicates (default: true)
 * @param {string} folderId Optional folder ID to search in. If not provided, searches in the entire Drive.
 * @return {Object} An object containing groups of duplicate files
 */
function findDuplicateFiles(considerFileType = true, folderId = null) {
  // Create a map to store files by their size (and optionally type)
  const fileMap = {};
  
  // Get files to check
  let files;
  if (folderId) {
    const folder = DriveApp.getFolderById(folderId);
    files = folder.getFiles();
  } else {
    files = DriveApp.getFiles();
  }
  
  // Process each file
  while (files.hasNext()) {
    const file = files.next();
    // Skip Google Docs, Sheets, etc. as they don't have a fixed size
    if (file.getSize() === 0) continue;
    
    const fileSize = file.getSize();
    const mimeType = file.getMimeType();
    
    // Create a key based on file size and optionally type
    let key = fileSize.toString();
    if (considerFileType) {
      key += '_' + mimeType;
    }
    
    // Add file to the map
    if (!fileMap[key]) {
      fileMap[key] = [];
    }
    
    fileMap[key].push({
      id: file.getId(),
      name: file.getName(),
      size: fileSize,
      mimeType: mimeType,
      url: file.getUrl(),
      dateCreated: file.getDateCreated(),
      lastUpdated: file.getLastUpdated()
    });
  }
  
  // Filter out unique files (groups with only one file)
  const duplicates = {};
  for (const key in fileMap) {
    if (fileMap[key].length > 1) {
      duplicates[key] = fileMap[key];
    }
  }
  
  return duplicates;
}

/**
 * Alternative function to check files in a specific folder and its subfolders
 */
function checkDuplicatesInFolder() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // Clear the sheet and set up headers
  sheet.clear();
  sheet.appendRow(["Group", "File Name", "Size", "Type", "File Path", "Date Created", "Last Updated", "URL"]);
  sheet.getRange(1, 1, 1, 8).setFontWeight("bold").setBackground("#f3f3f3");
  
  // Collect all files from the folder and subfolders
  var fileMap = {};
  var rootFolder = DriveApp.getRootFolder(); // Change this to your specific folder if needed
  collectFilesFromFolder(rootFolder, fileMap);
  
  // Filter out unique files
  const duplicates = {};
  for (const key in fileMap) {
    if (fileMap[key].length > 1) {
      duplicates[key] = fileMap[key];
    }
  }
  
  // Check if any duplicates were found
  if (Object.keys(duplicates).length === 0) {
    sheet.appendRow(["No duplicate files found"]);
    sheet.autoResizeColumns(1, 8);
    return;
  }
  
  // Add duplicates to the sheet
  addDuplicatesToSheet(duplicates, sheet);
  
  // Auto-resize columns
  sheet.autoResizeColumns(1, 8);
}

/**
 * Recursively collects files from a folder and its subfolders
 */
function collectFilesFromFolder(folder, fileMap, considerFileType = true) {
  // Process files in this folder
  var files = folder.getFiles();
  while (files.hasNext()) {
    const file = files.next();
    // Skip Google Docs, Sheets, etc. as they don't have a fixed size
    if (file.getSize() === 0) continue;
    
    const fileSize = file.getSize();
    const mimeType = file.getMimeType();
    
    // Create a key based on file size and optionally type
    let key = fileSize.toString();
    if (considerFileType) {
      key += '_' + mimeType;
    }
    
    // Add file to the map
    if (!fileMap[key]) {
      fileMap[key] = [];
    }
    
    fileMap[key].push({
      id: file.getId(),
      name: file.getName(),
      size: fileSize,
      mimeType: mimeType,
      url: file.getUrl(),
      dateCreated: file.getDateCreated(),
      lastUpdated: file.getLastUpdated()
    });
  }
  
  // Process subfolders
  var subfolders = folder.getFolders();
  while (subfolders.hasNext()) {
    var subfolder = subfolders.next();
    collectFilesFromFolder(subfolder, fileMap, considerFileType);
  }
}

/**
 * Helper function to format file size in a human-readable format
 */
function formatFileSize(bytes) {
  if (bytes < 1024) return bytes + " bytes";
  else if (bytes < 1048576) return (bytes / 1024).toFixed(2) + " KB";
  else if (bytes < 1073741824) return (bytes / 1048576).toFixed(2) + " MB";
  else return (bytes / 1073741824).toFixed(2) + " GB";
}

/**
 * Creates a new Google Spreadsheet with the duplicate files report
 */
function createDuplicateFilesSpreadsheet() {
  const duplicates = findDuplicateFiles(true);
  
  // Create a new spreadsheet
  const ss = SpreadsheetApp.create("Duplicate Files Report - " + new Date().toLocaleString());
  const sheet = ss.getActiveSheet();
  
  // Set up headers
  sheet.appendRow(["Group", "File Name", "Size", "Type", "File Path", "Date Created", "Last Updated", "URL"]);
  
  // Format header row
  sheet.getRange(1, 1, 1, 8).setFontWeight("bold").setBackground("#f3f3f3");
  
  // Check if any duplicates were found
  if (Object.keys(duplicates).length === 0) {
    sheet.appendRow(["No duplicate files found"]);
    sheet.autoResizeColumns(1, 8);
    return ss.getUrl();
  }
  
  // Add duplicates to the sheet
  addDuplicatesToSheet(duplicates, sheet);
  
  // Auto-resize columns
  sheet.autoResizeColumns(1, 8);
  
  Logger.log(`Spreadsheet created: ${ss.getUrl()}`);
  return ss.getUrl();
}
See the result into the spreadsheet:

vineri, 21 martie 2025

News : CLASP 3.0 Alpha google script.

CLASP (Command Line Apps Script Projects) is a tool developed by Google that allows developers to manage and develop Google Apps Script projects using a terminal instead of the standard browser editor. It simplifies workflows and supports modern project structures.
  • Key features include:
  • Import/Export: Clone and sync script projects between your terminal and Google account.
  • Version Management: Create, publish, and update script versions.
  • TypeScript Support: Write structured and robust code.
  • Google Workspace Integration: Deploy scripts for automating Workspace processes.

vineri, 22 noiembrie 2024

News : Project IDX from google.

I wrote about this project, and today I test this online tool and works great.
Project IDX is an online integrated development environment (IDE) developed by Google. It is based on Visual Studio Code, and the infrastructure runs on Google Cloud. In addition to including the features, languages and plugins supported by VS Code, it has unique functionality built by Google.
Test this online tool on the official webpage.

sâmbătă, 19 octombrie 2024

News : the Google Research with AI Colab and more ...

I saw few days ago the new AI implementation from Google Colab and I found the Google Research ...
This AI seams to work with development task, not all AI for development works well ...

marți, 10 septembrie 2024

News : Looker Studio and google sheet.

The Looker Studio can be found now on google sheet menu on Extension item.
I think the Looker Studio feature start few years ago ...

marți, 19 decembrie 2023

News : Google new online game .

Look for 25 of the most-searched people, places and things of all time, hidden in our Most Searched Playground. Play now.
The idea is to Uncover 25 of the most searched people, places, and moments from the past 25 years.

joi, 14 decembrie 2023

News : Google trending in 2023.

I was born in Romania, and I will stay here for a long time, especially in Falticeni when I arrived a few years ago.
See what was trending in 2023 - in my country Romania:
  • The times of the year
  • Cutremur
  • Chat GPT
  • Rona Hartner
  • Israel Gaza conflict
  • Iphone 15