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

miercuri, 12 noiembrie 2025

Google Apps Script : how to filter data by the value in a cell and reset the filter.

If you look at this blog, you will find examples of the results of running GAScript scripts in Excel. Today, I will show you how to filter the entire table based on a value from a cell and how to reset it to the original result without filtering.
function reseteazaFiltrarea() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const ultimaLinie = sheet.getLastRow();
  sheet.showRows(1, ultimaLinie);
  SpreadsheetApp.getUi().alert("Toate rândurile au fost afișate.");
}

function filtreazaRanduriDupaCelulaSelectata() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const cell = sheet.getActiveCell();
  const valoare = cell.getValue();
  const coloanaDeFiltrare = cell.getColumn();

  const ultimaLinie = sheet.getLastRow();

  for (let i = 1; i <= ultimaLinie; i++) {
    const valoareRand = sheet.getRange(i, coloanaDeFiltrare).getValue();
    sheet.showRows(i); // asigură-te că rândul e vizibil
    if (valoareRand !== valoare && i !== cell.getRow()) {
      sheet.hideRows(i);
    }
  }

  SpreadsheetApp.getUi().alert(`Filtrare aplicată pentru: ${valoare}`);
}

marți, 11 noiembrie 2025

News : ShaderBoy with google access ... bad or not?

In the web area, all sorts of propagated coincidences and implementations have started to appear. Here is a website that allows you to work with shaders and offers Google access functionality.
Because there are ongoing discussions about global security solutions and some security software developers have newer business implementations... I maintain my opinion that accessing a website with Google access, without knowing what access you are granting, for example: your photos, blogs, documents, is not a very good idea. Managing a large flow of Google accesses on a single account is difficult, which is why, in the case of hacking, using a traditional password will compromise only a single account.
Customizing access through Google, any other quirky ideas, and all kinds of duplicated accounts lead to rejections and blocks in web consumer psychology.
If you press no, then you are sure is works good ? https://shaderboy.net/app/.

vineri, 7 noiembrie 2025

News : Google Finance adds AI features ...

I maintain my statement that the most stable form of investment for a person is in XAU.
It turns out that Google also has new features to be more stable in evaluating other types of investments...
Google Finance new features integrated Gemini’s Deep Search for financial insights and added prediction market data directly in search and are rolling out in the US with earnings tabs and AI-powered market analysis.
They come with a project on labs , but I cannot see on my region area :
Search Labs isn’t available for your account right now
If you try to find XAU from Revolut, you need to search CURRENCY:XAUUSD (Gold Spot Price) ... somewhere : https://www.google.com/finance/quote/XAU-USD
I don't find this on Google Finance globally, I send a feedback.

marți, 28 octombrie 2025

News : 13,000x faster even the fastest classical supercomputers.

Today, we’re announcing research that shows — for the first time in history — that a quantum computer can successfully run a verifiable algorithm on hardware, surpassing even the fastest classical supercomputers (13,000x faster). It can compute the structure of a molecule, and paves a path towards real-world applications.

marți, 21 octombrie 2025

News : Google search comes with tools.

If you type "color picker" in the Google search box, it will show you this tool and many others ...

luni, 20 octombrie 2025

News : Google AI Studio - online apps and projects.

Google AI Studio is a browser-based platform that lets you:
  • access Gemini AI models
  • apps and code development projects
  • fast prototyping and easy integration
You can see on this official website.
I tested the Fit Check application with my avatar photo, and this is the result:

joi, 14 august 2025

News : some changes about Google AI.

Today, I received one mail from google ...
Hello Cătălin George, You can now generate high-fidelity, 720p videos with native audio using Veo 3 and Veo 3 Fast, available in paid preview in the Gemini API. ...
The first test with this A.P.I. was on 21 may 2025, about the Veo 3 on Google you can read on the gopogle blog with one article on 17 july 2025.
The last changelog was on 7 august 2025 on the google developer website with new features:
allow_adult setting in Image to Video generation are now available in restricted regions.
The mail also tell me about:
Veo 3 brings your prompts to life, creating 8-second videos with native audio. It lets you generate video from a text prompt, an initial image, or a combination of both to guide the style and starting frame. It can create a wide range of visual styles and natively generate dialogue in multiple languages, as well as sound effects and ambient noise.
... and has a simple python script for the A.P.I. and genai python package.
import time

from google import genai

joi, 7 august 2025

News : Google come with a new feature on blogger area.

Google love blogger idea and come with a new feature.
**Try our New Beta Features**: Create a more engaging reading experience with the help of Google Google Search links: Based on your blog content, Blogger will automatically identify key words and phrases in your post and insert Search links in case your readers want to explore more. In Compose View, Look for the ‘Pencil’ icon on the top-right of the page to get started.
After you wrote your post the go from HTML area to Compose View and on the right area of your post you will see an pencil. If you press this button then you got this feature.
I think about Google as it could do more than just one feature after many years for Blogger users. It seems that automation will irritate creativity, but it will improve the processed information.

duminică, 3 august 2025

News : ... timeline in Google free personal account!

This functionality - timeline was launched in Google Workspace two years ago, and here we are today seeing that it is also appearing in my personal free account. Obviously, Google Workspace is more advanced and specially created for.
Free Account: Personal use, free, includes Gmail, Google Drive (15GB storage), Docs, Sheets, etc. Basic features, no custom domain, limited support.
Google Workspace: Business-focused, paid (subscription-based), includes Gmail with custom domain, increased storage (30GB+), advanced collaboration tools (real-time co-editing in Docs, Sheets, Slides; Google Meet for video conferencing; shared calendars for team scheduling), admin controls, enhanced security, and 24/7 support.

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);
}