2016-05-31 3 views
1

Mon but est de tourner automatiquement les (très) longue de partager des liens génèrent par Google pour conduire ses documents à court url: goo.gl/codeUtilisez raccourcisseur d'URL goo.gl lorsqu'une feuille Google est ouvert

I trouvé le beau script de Jacob Jan Tunistra here, mais ce poste est maintenant fermé.

Le code de Jacob fonctionne comme un charme mais vous devez l'exécuter. Mes besoins sont pour exécuter le script automatiquement lorsque vous ouvrez le document (et non pour ouvrir le menu e appuyez sur le bouton. Comment puis-je modifier ce script s'il vous plaît?

function onOpen() { 
SpreadsheetApp.getUi() 
.createMenu("Shorten") 
.addItem("Go !!","rangeShort") 
.addToUi() 
} 

function rangeShort() { 
var range = SpreadsheetApp.getActiveRange(), data = range.getValues(); 
var output = []; 
for(var i = 0, iLen = data.length; i < iLen; i++) { 
var url = UrlShortener.Url.insert({longUrl: data[i][0]}); 
output.push([url.id]); 
} 
range.offset(0,1).setValues(output); 
} 

Répondre

2

Le service UrlShortener ne peut pas être utilisé par un simple trigger tel . comme onOpen, parce que ce service requiert une autorisation au lieu de cela, vous devez utiliser un déclencheur installable Il peut être créé comme suit:.

  1. de l'éditeur de script, allez à Ressources> déclencheurs du projet actuel
  2. créer un déclencheur pour fonction rangeShort avec les paramètres "from spreadsheet", "on ope n ".

Référence: managing installable triggers.

+0

Salut sandwich, merci pour la réponse. J'ai créé le déclencheur installable mais ne fonctionne toujours pas. Peut-être devrais-je modifier quelque chose dans le script aussi? Je veux dire que j'ai besoin d'appliquer le déclencheur à une colonne spécifique, mais le script actuel peut attendre une valeur à insérer, non? – Vince

1

Etes-vous sûr de vouloir l'exécuter automatiquement après l'avoir ouvert? Cela signifie que tous vos liens courts précédemment générés seront écrasés par les nouveaux. Vous souhaiterez peut-être générer un lien court automatiquement une fois que vous avez collé une URL longue. Pour cela, votre code devrait regarder la façon exacte suivante:

function rangeShort() { 
var range = SpreadsheetApp.getActiveRange(), data = range.getValues(); 
var output = []; 
for(var i = 0, iLen = data.length; i < iLen; i++) { 
var url = UrlShortener.Url.insert({longUrl: data[i][0]}); 
output.push([url.id]); 
} 
range.offset(0,1).setValues(output); 
} 

Après cela, de l'éditeur de script, allez à Ressources> Déclencheurs du projet actuel Créer un déclencheur pour rangeShort fonction avec des paramètres « de la feuille de calcul », " sur éditer ".