2017-01-09 72 views
2

道歉,因爲我是初學者編碼。我有興趣使用Google Apps腳本來自動分析Google表單響應。我可以使用Apps腳本將公式添加到Google表單響應中嗎?

simple example我是答覆的形式要求人們在電子表格:

1)有多少球員有?
2),他們完成了[1,2,等]

在提交我想運行一個腳本形式的計算怎麼可能,他們獲得的積分並把這個值下一個可用的列(E列在這個例子)。

我已經嘗試編寫我的第一個Apps腳本來自動執行此過程,但沒有成功。

示例代碼:

function onFormSubmit(e) { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Form Responses Master"); 
var players = e.values[2]; 
var place = e.values[3]; 
var positionPoints = e.values[4]; 
var positionPoints = (players - place + 1); 

return positionPoints; 
} 

我知道有可用的解決辦法通過創建重複的網頁,但我希望有人也許能告訴我如何代碼應用程序腳本的解決方案,希望我可能會更好地理解編碼過程。

回答

0

您可以在響應收集器電子表格中編寫自己的appscript,而不是在窗體的腳本編輯器中編寫代碼。

因此,請轉到您的回覆表格並粘貼此代碼。

function myFunction() 
{ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses Master"); 
    var rowNo = sheet.getLastRow(); 
    var colNo = sheet.getLastColumn(); 
    sheet.getRange(rowNo, colNo).setValue("=(C"+rowNo+"-D"+rowNo+")+1"); 
} 

現在,轉到資源 - >當前項目觸發器。點擊添加新的,並設置下拉列表中的這些值:myFunction - 從電子表格 - 在表單提交。

你就完成了。每當提交新的回覆時,位置點將自動計算。

在這裏, 可變工作表獲取您可以執行的不同工作表操作的活動電子表格。

如代碼中所示,rowNo和colNo只是分別獲取電子表格中寫入內容的最後一行/列的值。

而且,要在列'E'中設置公式,可以使用setValue。因此,在第二行的情況下,"=(C"+rowNo+"-D"+rowNo+")+1"將被轉換爲(C2-D2)+1,以此類推下一行。

getRange僅用於告訴腳本在特定單元格內寫入公式。

+0

非常感謝您的幫助Shyam。 –

+0

不客氣:),樂意幫忙! –

相關問題