我開發了一個電子表格,記錄課堂特定資料以及學生在活動中的得分。到目前為止,我撰寫的腳本將復制教師資訊(姓名、期間、評估和標準)以及標準分數。該資料被傳輸到資料電子表格中。我遇到了這個問題,但是教師資料僅與單個分數條目相關聯。我需要它與每個分數相關聯。(見渲染不良的影像)
渲染不良的影像 期望的結果
隨后保存的條目填寫在下面。這一切都有效。我只是無法填寫范圍。希望這是有道理的。代碼如下。
function saveRecord() {
const ss = SpreadsheetApp.getActiveSpreadsheet()
const formWS = ss.getSheetByName("Form")
const settingsWS = ss.getSheetByName("Settings")
const dataWS = ss.getSheetByName("Data")
const fieldrange = ["C4","D4","E4","F4","G4"]
const fieldvalues = fieldrange.map(f => formWS.getRange(f).getValue())
dataWS.appendRow(fieldvalues)
const scoresdata = formWS.getRange(13, 4, formWS.getLastRow(), 1).getValues()
dataWS.getRange(dataWS.getLastRow(),dataWS.getLastColumn(),scoresdata.length,1).setValues(scoresdata)
console.log(fieldvalues)
//need to fix this, watch the video, I deleated some
}
function clearRecord(){
fieldrange.forEach(f => formWS.getRange(f).clearContent())
}
uj5u.com熱心網友回復:
試試這個:
function saveRecord() {
const ss = SpreadsheetApp.getActive();
const fsh = ss.getSheetByName("Form");
const dsh = ss.getSheetByName("Data");
dsh.appendRow(fsh.getRange("C4:G4").getDisplayValues()[0]);
const scores = fsh.getRange(13, 4, fsh.getLastRow()).getDisplayValues()
dsh.getRange(dsh.getLastRow() 1, 1, scores.length).setValues(scores)
}
uj5u.com熱心網友回復:
描述
我相信你想要的是用教師資訊填寫 A 到 D 列。
我無法對此進行測驗,但我相信它會起作用。
我沒有看,clearRecord因為fieldrange沒有定義。
腳本
function saveRecord() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const formWS = ss.getSheetByName("Form");
const dataWS = ss.getSheetByName("Data");
const fieldvalues = formWS.getRange(4,3,1,5).getValues()[0];
console.log(fieldvalues)
const scoresdata = formWS.getRange(13, 4, formWS.getLastRow()-12, 1).getValues();
scoresdata = scoresdata.map( row => fieldvalues.concat(row) );
dataWS.getRange(dataWS.getLastRow() 1,1,scoresdata.length,scoresdata[0].length).setValues(scoresdata);
}
uj5u.com熱心網友回復:
我認為這應該有效:
function saveRecord() {
const ss = SpreadsheetApp.getActiveSpreadsheet()
const formWS = ss.getSheetByName("Form")
const settingsWS = ss.getSheetByName("Settings") // ???
const dataWS = ss.getSheetByName("Data")
// const fieldrange = ["C4","D4","E4","F4","G4"]
// const fieldvalues = fieldrange.map(f => formWS.getRange(f).getValue())
const fieldvalues = formWS.getRange('C4:G4').getValues().flat(); // it works faster
const scoresdata = formWS.getRange(13, 4, formWS.getLastRow()-12, 1).getValues(); // -12 !!!
// add the column 'filedvalues' to the 2d array 'scoresdata'
const table = scoresdata.map(score => [...fieldvalues, score[0]])
// put the the new 2d array 'table' on the sheet (after the last row)
dataWS.getRange(dataWS.getLastRow() 1,1,table.length,table[0].length).setValues(table)
}
該函式clearRecord()可能如下所示:
function clearRecord() {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form")
.getRange('C4:G4')
.clearContent()
}
或者您可以只在函式末尾的所有一行saveRecord()來清除范圍:
formWS.getRange('C4:G4').clearContent()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479342.html
標籤:谷歌应用脚本
