晚上好,
我正在尝试使用一些编码技巧来帮助操作Google文档中的电子表格,并认为我制定的逻辑是合理的 - 但脚本只是将结果返回为“范围”。
本质上,脚本是一个嵌套循环,并且(应该)从一行数据中的六个点(从11开始)获取值,并将它们拼接成一个长垂直(第38列)。然后它应该移动到下一行。
我认为它有效,但结果只是回到“范围”而无法看到如何将值放入范围,如果这就是这个意思。
我也意识到使用单个数组在单个数组上收集数据可能更有效,但我仍然试图掌握语法。
这是我的代码:
function Transform() {
//load spreadsheet data and initialise variables
var sheet = SpreadsheetApp.getActiveSheet();
var firstrow = 11;//this is a manual figure
var d = firstrow;
var valuerplc = sheet.getRange(firstrow, 38);
var value =1;
for(var c=firstrow; c<sheet.getLastRow(); c++){
for (var e=3; e<33; e=e+6){
var mon = sheet.getRange(c, e);
valuerplc = sheet.getRange(d, 38);
valuerplc.setValue(mon);
}
d++;
}
}
有人可以帮忙,或者至少指出我正确的方向吗?
答案 0 :(得分:0)
您遇到了常见的新手问题,无法区分范围和值。
范围表示电子表格的某个区域,其中的方法可让您访问对象的各种特征。您在电子表格中看到的内容或数据可通过.getValue()
方法(针对一个小区)或.getValues()
(针对多个小区)进行访问。
变化:
var mon = sheet.getRange(c, e);
要:
var mon = sheet.getRange(c, e).getValue();
...并且你将拥有该范围内的数据,如字符串,数字或日期,具体取决于那里的数据。
您选择的变量名称可能会导致混淆,值得注意。例如,请查看valuerplc
。该名称暗示它是一个值,可以与.getValue()
和.setValue()
混淆。但它使用的方式是作为范围,如valuerplc.setValue(mon)
,所以它显然不是一个值。
function Transform() {
//load spreadsheet data and initialise variables
var sheet = SpreadsheetApp.getActiveSheet();
var firstrow = 11;//this is a manual figure
var d = firstrow;
var valuerplc = sheet.getRange(firstrow, 38);
var value =1;
for(var c=firstrow; c<sheet.getLastRow(); c++){
for (var e=3; e<33; e=e+6){
var mon = sheet.getRange(c, e).getValue();
valuerplc = sheet.getRange(d, 38);
valuerplc.setValue(mon);
}
d++;
}
}