Actualmente estoy usando una entrada que analiza una ID de hoja de Google y la inserta en el código.
let sheetIdInput = document.getElementById('sheetidinput'); let id = sheetIdInput.value; Quiero que los usuarios puedan pegar la URL completa de la hoja de Google en esta entrada sheetidinput de entrada y que solo usen la ID de la hoja de la URL.
Ejemplo de URL de hoja de Google es
https://docs.google.com/spreadsheets/d/132SaKuLRdHcwEKhhQVOKd2_3j30nFvQbTgplh4nPZOg/edit#gid=0 El ID de hoja está entre .../d/ y /edit... en este caso 132SaKuLRdHcwEKhhQVOKd2_3j30nFvQbTgplh4nPZOg
Este patrón se repite en todas las URL de hojas de cálculo de Google. Cualquier ayuda sería muy apreciada.
Podrías usar expresiones regulares para hacerlo:
let url = "https://docs.google.com/spreadsheets/d/132SaKuLRdHcwEKhhQVOKd2_3j30nFvQbTgplh4nPZOg/edit#gid=0"; let capturedId = url.match(/\/d\/(.+)\//) console.log(capturedId[1]) // prints : 132SaKuLRdHcwEKhhQVOKd2_3j30nFvQbTgplh4nPZOgPuedes usar una expresión regular:
var re = /.*\/d\/(.*)\/edit.*/; var url = "https://docs.google.com/spreadsheets/d/132SaKuLRdHcwEKhhQVOKd2_3j30nFvQbTgplh4nPZOg/edit#gid=0 "; var match = url.match(re); var id = match[1] //Use id }Aunque las soluciones anteriores funcionan bien para su situación, también estoy agregando esta:
let url = "https://docs.google.com/spreadsheets/d/132SaKuLRdHcwEKhhQVOKd2_3j30nFvQbTgplh4nPZOg/edit#gid=0"; let matches = /\/([\w-_]{18,})\/(.*?gid=(\d+))?/.exec(url); console.log("spreadsheet id " + matches[1]); console.log("sheet id " + matches[3]); Los matches hacen uso de expresiones regulares de la siguiente manera:
el primer grupo de captura se usa para devolver la id de la hoja de cálculo al hacer coincidir cualquier carácter de palabra y también asumiendo que la identificación tiene más de 18 caracteres;
el segundo y tercer grupo de captura se utilizan para devolver el id de la hoja haciendo coincidir los caracteres después de gid .