2023-06-14

GAS: GoogleSheet上の画像にスクリプトを動的に割り当てる(複数の画像を配置した場合)

以下の過去記事に質問コメントがあったのでその回答記事になります。

画像を複数用意した場合に、それぞれに異なるメソッドを割りあてる方法についてです。代替テキストを利用したら良いということを書きましたが、具体例を以下に書きます。

今回のお題

  • 以下のように、シートに2つの画像を用意します
  • それぞれの画像をクリックすると、「モモだよ」「りすだよ」と表示します。







代替テキストを割り当てる

今回はタイトルに書いてみました。それぞれに、「momo」「risu」と書きました。








実装コード

下記のようになります。ポイントとしては、イメージを取ってきて、getAltTextTitleで画像のタイトルを取り出し、確認してメソッドを登録しているところになります。なお、assignScriptsToImages()を実行しないと、メソッドは登録されませんので、このメソッドをいつ呼び出すかについては、AppScriptのトリガーでシートの起動時にこのメソッドを呼び出すようにするのは一つの手でしょう。


function assignScriptsToImages() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var images =sheet.getImages();
for(var i=0;i<images.length;i++){
switch(images[i].getAltTextTitle()){
case "risu":
images[i].assignScript("risuSay");
break;
case "momo":
images[i].assignScript("momoSay");
break;
}
}
}
function risuSay(){
Browser.msgBox("りすだよ");
}
function momoSay(){
Browser.msgBox("モモだよ");
}


0 件のコメント:

コメントを投稿