it-swarm.dev

Google app komut dosyası işlevleri için özel klavye kısayolları nasıl oluşturulur?

Microsoft Excel elektronik tablolarımın bazılarını Google Belge Elektronik Tabloları ile değiştirmenin uygunluğunu anlamaya çalışıyorum. Bir google docs elektronik tablosunda google app komut dosyası işlevine özel bir klavye kısayolu nasıl oluşturabilirim? Bu, VBA ve Excel ile sık yaptığım bir şey.

43
User

Apps Komut Dosyası yalnızca sunucu tarafı olaylarını gösterir. Ne yazık ki, günümüzde klavye vuruşları gibi müşteri tarafı olaylarını kaydedemezsiniz. Lütfen issue izleyicimizde bir sorun giriniz

19
Arun Nagarajan

Bu, şimdi Sayfalar içinde desteklenir (bkz. Https://issuetracker.google.com/issues/36752620 ), ancak henüz Dokümanlar'da değil. Dokümanlar desteği için bkz. Ve yıldızın https://issuetracker.google.com/issues/36752620

10
studgeek

Çok yakın bir zamanda (Nisan 2018) Google, bir makroyu ateşlemek için bir klavye kısayolu atamanın ve mevcut komut dosyalarını makro olarak içe aktarmanın bir yolunu içeren bir makro kayıt cihazı başlattı. Bkz. Google Sayfa Makroları

NOT: Bu özellik şu anda kullanıma sunulmuştur, böylece herkesin kullanımına sunulması birkaç hafta sürebilir. Benim durumumda ilk önce kişisel Google hesabımda mevcuttu ve dünden beri Google Apps hesaplarımdan birinde mevcut.

9
Rubén

Sayı 306 'da bir çözüm gönderildi! Tembeller için işte burada:

HtmlService'deki yeni IFRAME modu, anahtar kodların Eklentilere aktarılmasına izin veriyor ...

$(document).keydown(function(e){
  //CTRL + V keydown combo
  if(e.ctrlKey && e.keyCode == 86){
    $( '#output' ).html("I've been pressed!");
  }
})

Bunun olması için önce kenar çubuğunu tıklatmanız/etkinleştirmeniz gerekir.

5
John Targaryen

Sadece güncelleniyor, artık The Guy’ın IFRAME ile belirttiği geçici çözüm, bir klavye, sadece klavye komutlarına girmek, bunları jquery ile tedavi etmek ve uygun işlevi çalıştırmak için zaten bir STUB oluşturabilir.

2
Kriggs

Harika haberler :) Bir sonraki kolay adımları izleyerek google app komut dosyası işlevleri için özel klavye kısayolları elde edebilirsiniz:

  1. Google Sayfa Arayüzünde, Araçlar> Makrolar> Makroyu Kaydet öğesini seçin.
  2. Herhangi bir işlemi kaydedin. Örneğin, A1'deki renk arka planını değiştirin. Kaydet düğmesine basın.
  3. Rasgele bir başlık ve tercih edilen kısayol ile kaydedin. Daha sonra değiştirebilirsiniz.
  4. Apps Komut Dosyası düzenleyicisindeki sayfaya bağlı komut dosyasını açmak için Araçlar> Komut dosyası düzenleyicisini seçin.
  5. Yeni düzenleyici sekmesinde, Görünüm> Liste Dosyasını Göster öğesini seçin.
  6. TA - DÁ! : D functionName değerini istediğiniz değere değiştirin;)

Makro fonksiyonlarının hiçbir argüman almaması ve hiçbir değer döndürmemesi gerektiğini unutmayın. https://developers.google.com/apps-script/guides/sheets/macros#importing_functions_as_macros adresinde daha fazla bilgi bulabilirsiniz.

2
urpi5

Bunun için olası bir çalışma, "tetikleyici metin" için bir sütun ayırmak, gerçekleştirmeye çalıştığınız her eylem için farklı metin tabanlı tetikleyiciler tanımlamak ve ardından değeri kontrol eden ve "temelli bir işlemi gerçekleştiren bir işlev" oluşturmaktır metni tetikle ". Daha sonra kısayol tuşu işleviniz için komut dosyası düzenleyicide "Kaynaklar" altındaki projenin tetikleyicilerinde bir onEdit olay tetikleyicisini ayarlayabilirsiniz. 

Bu yaklaşımın en büyük dezavantajı onEdit tetikleyicisinin değişikliği yakalaması ve güncellemeyi gerçekleştirmesi (en azından benim için) yaklaşık 7 tam saniye sürmesidir. Daha hızlı bir şekilde işlem yapmak için bir şeye ihtiyacınız olursa, alternatif bir yaklaşım aramanız gerekebilir.

Aşağıda belirtilen "tetikleyici" sütunundaki tetikleyici metne göre satır renginin nasıl değiştirileceğine ilişkin bir örnek verdim. Sayfada yapılabilecek herhangi bir şeyi, değerleri değiştirme, yazı tipi ağırlığını ayarlama, veri kopyalama, hatta tetikleyici metin girişini kontrol ettikten sonra diğer işlevleri çalıştırma gibi komutlarla yapmak için kullanabilirsiniz.

/*you will need to add an onEdit trigger to your project 
  for this to run when you edit the cell*/


//function to update row color using entered text in a specified "trigger" column

function hotKey(){ 

  //get the cell you edited and the associated column and row number
  var cell = sheet.getActiveCell(); 
  var thisCol = cell.getColumn(); 
  var thisRow = cell.getRow(); 

  //set a range variable for the entire row
  var colorRow = sheet.getRange(thisRow,thisCol,1,Cols); 

  //get the edited value for the cell as a string
  var val = cell.getValue().toString(); 

  //check that the edited cell is in the trigger column
  if (thisCol = 1){

    //update the row color based on the entered value 
    if(val == "g"){ 
      colorRow.setBackground("#00ff00"); //sets row color to green
      cell.clearContent(); //delete the trigger cell value

    }else if(val == "r"){
      colorRow.setBackground("#ff0000");
      cell.clearContent();
    }else if(val == "fd"){
      colorRow.setBackground("#fff2cc");
      cell.clearContent();
    }else if(val == "pr"){
      colorRow.setBackground("#ffff00");
      cell.clearContent();
    }else if(val == "cn"){
      colorRow.setBackground("#6fa8dc");
      cell.clearContent();
    }
  }
}
1
MistyDawn

Benzer bir sorunla mücadele ediyorum ve henüz fazla çözülmedi, ancak bunun için ileriye doğru bir yol bulunabileceğini düşünüyorum Class Textbox altındaki keypress olay işleyicisi

Bunun sunucu tarafındaki sorunu çözüp çözemediğini ancak Arun'un işaret ettiğini bilmiyorum ama umuyorum. Bunu denemek için çok fazla zaman kaybetmeden önce lütfen nedenimi düzeltmekten çekinmeyin! :)

0
The Guy

Uzun lafın kısası: tuşa basma olaylarını yakalamak için bir tuşa basma olay işleyicisi kullanan ve bunları istediğiniz kısayol tuşu kısayollarıyla karşılaştıran bir html hizmeti yazın; ardından, uygulama tuş takımında uygun alt rutini çağırır. belge değişiklikleri.

Canlılık devam ettiği sürece, zaten aşina olduğunuz vba kadar kolay değil, ancak bir kez gerçekten çok zor olmayan şeyleri yapmanın farklı yolunu geçtiğinizde.

0
The Guy