在這里,我的目標是在我的網站中將 google 作業表范圍顯示為表格。
rangeB在表格中顯示的默認范圍是“P6:R34”;
但是當時間到了它應該是“P5:R34”
所以我寫了我的代碼但是它給出了以下錯誤。
TypeError: range.getDisplayValues is not a function (line 31, file "Code")
出了什么問題(或)如何在 App 腳本中組合這些范圍 ..?
代碼.gs
function doGet() {
template = HtmlService.createTemplateFromFile('Index.html');
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}
var now = new Date().getTime() ;
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth();
var date = d.getDate();
var ctdr = new Date(year, month, date, 14, 13, 00).getTime();
distance = ctdr - now;
var spreadsheetId = '1jH0y-PknkZXH7KqjPBWDv98kkBnndGt_GIbdUh_1nRM';
var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName("LNW") ;
rangeA = sheet.getRange("P4:R4") ;
rangeB = sheet.getRange("P6:R34") ;
range = [rangeA, rangeB] ;
if (distance < 0) {
rangeB = sheet.getRange("P5:R34") ;
}
var dataValues = range.getDisplayValues()
.map(row => row.map(value =>
value.replace(/\n/g, `<br/>`)
)
);
索引.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<style>
table, tbody, tr, th, td {
text-align:center;
font-family: Arial, sans-serif;
font-size: 14.5px ;
border-collapse: collapse;
margin : auto ;
}
th {
background-color: #f5f5f5 ;
padding : 6px ;
}
</style>
<body>
<table cellpadding="12px" >
<? var tableData = dataValues ?>
<? for(var i = 0; i < tableData.length; i ) { ?>
<? if(i == 0) { ?>
<tr>
<? for(var j = 0; j < tableData[i].length; j ) { ?>
<th> <?!= tableData[i][j] ?></th>
<? } ?>
</tr>
<? } else { ?>
<tr>
<? for(var j = 0; j < tableData[i].length; j ) { ?>
<td> <?!= tableData[i][j] ?></td>
<? } ?>
</tr>
<? } ?>
<? } ?>
</table>
</body>
</html>
uj5u.com熱心網友回復:
range是一個陣列Range。
此外,您在定義rangeB之后range進行了修改,我認為這不是您想要的。
rangeA = sheet.getRange("P4:R4") ;
rangeB = sheet.getRange("P6:R34") ;
if (distance < 0) {
rangeB = sheet.getRange("P5:R34") ;
}
ranges = [rangeA, rangeB] ;
var dataValues = ranges.flatMap(range =>
range.getDisplayValues()
.map(row => row.map(value =>
value.replace(/\n/g, `<br/>`)
)
)
);
uj5u.com熱心網友回復:
您的范圍變數似乎是一個陣列,無法訪問 getDisplayValues 函式。
range = [rangeA, rangeB] ;
var dataValues = range.getDisplayValues()
.map(row => row.map(value =>
value.replace(/\n/g, `<br/>`)
)
);
您應該將 getDisplayValues 移動到實際范圍物件(rangeA、rangeB)。
它應該看起來像:
var ranges = [rangeA,rangeB];
var dataValues = ranges.map(function(range){
range.displayValue.map().....etc.
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/534633.html
