2014-10-28 115 views
0

我遇到了一個奇怪的問題,導致我相當大的困難,希望有人她可能有一些洞察力。複製谷歌應用程序腳本與表格

我有一個表單接受迴應並將結果發送到工作表。我已經編寫了一個附加的onsubmit腳本,然後標記其他一些表單,以便於跟蹤並提供預填充的url,可以在下次需要提交表單時發送。

這些表格是用於學生數據收集的,我爲此需要三個不同年份收集有關學生的數據。我的問題是,我似乎無法將腳本複製到其他表單,而不會停止工作。

我採取了以下方法:

起初我只是想複製整個表格,然後改變它,這意味着腳本與拷貝來了。

然後我試着保留重複的表格,但刪除了所有的腳本信息,並將腳本複製並粘貼到窗體中的新項目中。

然後,我嘗試創建一個新的測試表單,然後將腳本複製並粘貼到該表單 - 再次沒有成功。

所有嘗試都導致數據成功提交到響應表,但腳本無法以靜默方式觸發或失敗。

我看不到任何腳本我已經產生了這將導致它只能在一個窗體上工作,但我不是很有經驗的JS,它可能是我沒有看到明顯的東西(我知道那裏在腳本中有些愚蠢的地方,但這是我知道的作品)。

如果任何人都可以指出任何會使腳本不能用於任何其他形式的東西,或者可以解釋腳本如何被成功複製,我會非常感激。

代碼:

/* onsubmit function that creates a prefilled url and prints to sheet */ 
function onSubmit(e) { 
    var subject = "ICT"; 
    //generate url 
    var url=e.response.toPrefilledUrl(); 

    var responses = e.response;//e is of type formresponse. 
    var name = responses.getItemResponses()[0].getResponse(); 
    var sheet1 = SpreadsheetApp.openByUrl("https://docs.google.com/a/rbair.org.uk/spreadsheets/d/1w_rCPJR-O9_fUs1T5HKmaTUsRjk_9JRVRPxV2kJzNMk/edit#gid=0").getSheetByName("Admin"); 
    update(name, subject); 


    //print to cell in feedback sheet 
    var data = sheet1.getDataRange().getValues(); 
    for(i=0; i<100; i++) 
    { 
    if(data[i][1]==name) 
    { 
     sheet1.getRange(i+1, 3).setValue(url); 
    } 
    } 
} 
function test() 
{ 
    var name = "Piers Hartley"; 
    var subject = "ICT"; 
    update(name, subject); 
} 

function update (name, subject) 
{ 
    //var name = "Piers Hartley"; 
    //var subject = "ICT"; 
    var msheet = SpreadsheetApp.openByUrl("https://docs.google.com/a/rbair.org.uk/spreadsheets/d/1IauIkNCrE95qNAL2KxfJhespEcRWuMXYGzkkjwFnezg/edit#gid=0"); 
    var refsheet = msheet.getSheetByName("Subject Teachers"); 
    var track = refsheet.getRange(2,10).getValue(); 
    var tsheet = msheet.getSheetByName(track); 
    var trdr = tsheet.getDataRange(); 
    var trdata = trdr.getValues(); 
    var lcol = trdr.getLastColumn(); 
    var lrow = trdr.getLastRow(); 
    for(i=0; i<lcol; i++) 
    { 
    if (trdata [0] [i] == subject) 
    { 
     for (j=1; j<lrow; j++) 
     { 
     if (trdata [j] [i] == name) 
     { 

      tsheet.getRange(i+2, j+1).setValue("Done"); 
     } 
     } 
    } 
    } 
} 

回答

0

您是否添加了在表單提交觸發? (在腳本編輯器的Resources下)。

+0

Derp ...謝謝,我完全錯過了 - 是否可以將它歸咎於16小時的編碼宿醉? – 2014-10-28 23:37:47

相關問題