2016-05-31 7 views
1

私の目標は、自動的に(非常に)長い共有リンクはショートURLの彼の文書のためにドライブ、Googleによって生成有効にすることですJacob Jan Tunistra hereの美しいスクリプトを見つけましたが、その投稿は現在閉鎖されています。使用goo.gl URL短縮サービスは

ヤコブのコードはチャームのように機能しますが、実行する必要があります。私のニーズには、どのように私はそのスクリプトをしてください変更することができます。あなたは、ドキュメントを開いたときに自動的にスクリプトを実行するために(およびメニューeはボタンを押して開くことができません?

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

答えて

2

UrlShortenerサービスは、このようなsimple triggerで使用することはできません。このサービスは、許可を必要とするので、開く時のように、その代わりに、インストール可能なトリガーを使用する必要があり、次のようにそれを作成することができます。スクリプトエディタから

  1. 、現在のプロジェクトのトリガリソース>に行く
  2. がためにトリガーを作成します。関数rangeShortには、 "スプレッドシートから"、 "on ope n "である。

参照:​​

+0

こんにちは、サンドイッチ、返信いただきありがとうございます。私はインストール可能なトリガーを作成しましたが、まだ動作しません。スクリプト内の何かを修正するべきでしょうか?私はすべての特定の列にトリガーを適用する必要があることを意味しますが、現在のスクリプトは挿入される値を待つかもしれません。 – Vince

1

開封後に自動的に実行してもよろしいですか? これは、以前に生成されたすべてのショートリンクが新しいリンクによって上書きされることを意味します。 長いURLを貼り付けると、短いリンクを自動的に生成することができます。そのために は、あなたのコードは、以下の正確な方法になります>リソースに行き、スクリプトエディタから、現在のプロジェクトのトリガーを

その後
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); 
} 

を 」、「スプレッドシートから」パラメータを持つ関数rangeShortのためのトリガーを作成します。 on edit "となります。

関連する問題