Update value in a spreadsheet sidebar when next row is selected in table

后端 未结 2 1197
傲寒
傲寒 2021-01-27 02:07

To facilitate the annotation of audio files in a Google spreadsheet, I\'d like to implement an audio player in the sidebar which automatically plays the audio file mentioned as

2条回答
  •  广开言路
    2021-01-27 03:01

    Playing My Music

    I added a play this button to each of my playlist selections. Perhaps this will help you to accomplish what you wish.

    code.gs:

    function onOpen() {
      SpreadsheetApp.getUi().createMenu('My Music')
      .addItem('Launch Music', 'launchMusicDialog')
      .addToUi();
    }
    
    function convMediaToDataUri(filename){
      var filename=filename || "You Make Loving Fun.mp3";//this was my debug song
      var folder=DriveApp.getFolderById("Music Folder Id");
      var files=folder.getFilesByName(filename);
      var n=0;
      while(files.hasNext()) {
        var file=files.next();
        n++;
      }
      if(n==1) {
        var blob=file.getBlob();
        var b64DataUri='data:' + blob.getContentType() + ';base64,' + Utilities.base64Encode(blob.getBytes());
        Logger.log(b64DataUri)
        var fObj={filename:file.getName(),uri:b64DataUri}
        return fObj;
      }
      throw("Multiple Files with same name.");
      return null;
    }
    
    
    function launchMusicDialog() {
      var userInterface=HtmlService.createHtmlOutputFromFile('music1');
      SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Music');
    }
    
    
    function doGet() {
      return HtmlService.createHtmlOutputFromFile('music1').addMetaTag('viewport', 'width=device-width, initial-scale=1');
    }
    
    function getPlaylist() {
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getSheetByName('MusicList');
      var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
      var vA=rg.getValues();
      var pl=[];
      var idx=0;
      var html='';
      for(var i=0;i',idx,vA[i][0],vA[i][1],idx++);
        }
      }
      html+='
    IndexItemFileName 
    %s%s%s
    '; return {playlist:pl,html:html}; }

    music1.html

    
    
      
        
        
        
        
        
      
      
      
        

    Admittedly, the transition is a little rough but I didn't put that much effort into the modification so perhaps you can smooth it out a little. Just run launchMusicDiaog() to get it going. There's also a doGet() in there for the webapp.

提交回复
热议问题