10

Burada bir gönderi olmak istemiyorum. CSS, HTML ve XML'i çok iyi biliyorum ama her zaman JS'den kaçındınız. Çok az javascript biliyorum ve kısa bir süre önce bir Lynda.com kursuna yetişmek için başladım. Cehaletim için üzgünüm. Bu nedenle, gerçekten Google Apps Komut Dosyası'nı öğrenmeye çalışıyorum. Açıkçası, herhangi bir şey anlamamdan önce JS'yi öğrenmem gerekiyor.Düzenlemek için bir Google Dokümanı'nın kopyasını otomatik olarak oluşturmak için Komut Dosyası

Çalıştığım okul (5000 öğrenci) çevrimiçi bir müfredat oluşturdu. Müfredatı binlerce Google doküman çalışma sayfası biçiminde oluşturdum. Bu çalışma sayfaları çeşitli web sitelerine bağlanır.

Karşılaştığımız sorun, öğrenciler belgeleri açtıklarında, bunları düzenleyebilmeleri için bunların bir kopyasını almaları gerektiğidir (tabii ki orijinalleri düzenlemelerini istemiyorum). Bu, tabletlerinde mobil tarayıcı kullanan öğrencilerin Google Dokümanlar'da bir kopyasını oluşturması nedeniyle gerçekten çok fazla su geçirmez. Mobil cihazlarda masaüstü kullanıcı arayüzünü kullanırken gerçekten işe yaramaz.

Bu tür bir şeyin komut dosyasıyla otomatikleştirilebileceğini biliyorum. Ben here baktım, düşük ve bak, işe yarıyor! Ben üç yıldır böyle bir işlevsellik ararken ben pantolonumu sevinçle kızdırıyorum. (Evet, biliyorum üzgünüm).

Yani, sorduğum şey, noob'un bir kullanıcı, bir web sitesi dersindeki bir düğmeyi tıklatması ve otomatik olarak çalışma sayfasının bir kopyasını açması ve açması için bu kodu nasıl uyarlayacağına dair bir noob'a yardımcı olmaya istekli olacaktır. yeni bir sekmede?

/** 
* Copy an existing file. 
* 
* @param {String} originFileId ID of the origin file to copy. 
* @param {String} copyTitle Title of the copy. 
*/ 
function copyFile(originFileId, copyTitle) { 
    var body = {'title': copyTitle}; 
    var request = gapi.client.drive.files.copy({ 
    'fileId': originFileId, 
    'resource': body 
    }); 
    request.execute(function(resp) { 
    console.log('Copy ID: ' + resp.id); 
    }); 
} 

dün JavaScript öğrenme bütün gün geçirmek, hala gitmek için uzun bir yol var. Bunu kendi başıma çözmem için ne kadar zaman alacağından emin değilim.

+1

Ve sorunuz tam olarak nedir? – PeeHaa

+0

Temel olarak, bir düğme tıklamasıyla çalıştırmak ve dokümanın yeni bir sekmede açılmasını sağlamak için bu işleve gerek duyarsınız. İnsanları aramak için kodu adapte edecek kadar naziksiniz. – user1798533

+0

Bu, Apps Komut Dosyası kodu değil. Bunu hiç öğrenmeye çalıştın mı? (birisi sizin için yazmak için sormadan önce) –

cevap

12

Bunu kesinlikle Apps Komut Dosyası ile yapabilirsiniz. Sadece birkaç satır alır. Aslında, sadece yazdığım sürümü kullanabilirsiniz.

  1. en azından bunu erişecek millet için etkinleştirilmiş okuma olduğunu size orijinal belgeyi olun - İşte

    Ben yapardım nasıl.

    Access rights

  2. tut FileId URL'den -

    function doGet(e) { 
        //file has to be at least readable by the person running the script 
        var fileId = e.parameters.fileId; 
        if(!fileId){ 
        //have a default fileId for testing. 
        fileId = '1K7OA1lnzphJRuJ7ZjCfLu83MSwOXoEKWY6BuqYitTQQ'; 
        } 
        var newUrl = DocsList.getFileById(fileId).makeCopy('File copied to my drive').getUrl(); 
        return HtmlService.createHtmlOutput('<h1><a href="'+newUrl+'">Open Document</a></h1>'); 
    } 
    
  3. çalışacak şekilde dağıtın -

    enter image description here

  4. aşağıdaki kodla Apps Komut bir web app yazın uygulamaya erişen kişi olarak.

    deploy settings

    hatırlamak

Bir anahtar şey Apps Kodu tarafından oluşturulmuş bir web uygulaması otomatik yeni bir pencerede açıldığını zorlayamaz olmasıdır. Bunun yerine, düzenleme modunda belgeye tıklanabilir bir bağlantı gösterebiliriz.

(bazı kukla dosya oluşturur) yapıldığını burada görebilirsiniz - Kendi fileId yılında koyarak bunu test edebilirsiniz

https://script.google.com/macros/s/AKfycbyvxkYqgPQEb3ICieywqWrQ2-2KWb-V0MghR2xayQyExFgVT2h3/exec?fileId=0AkJNj_IM2wiPdGhsNEJzZ2RtZU9NaHc4QXdvbHhSM0E

.

4

anda aşağıdaki kodu kullanarak bir dosyanın bir kopyasını oluşturabilirsiniz itiraz edildi:

Arun Nagarajan answer açıklandığı gibi fileId elde edilebilir
File file=DriveApp.getFileById(fileId).makeCopy(fileName, folder); 

.