因此,我是Google脚本的新手,并编写了一个代码,该代码使我可以从另一个名为“ BSP_SampleList”的工作表中获取唯一值,并将其写入另一个名为“ Email”的工作表中。
但是,我很难在一列中列出值。我成功地在一个单元格中使用TSCAnumbsheet.getRange(i + 1,2,1,1).setValue([a.join(',')])列出了值。我想获取这些值并将它们写在一列中,如果有意义的话,可以使用不同的行。
例如:如果我有三个项目[苹果,橙子,葡萄]。与其以这种方式编写,不如将其编写为: 在A栏中 1个苹果 2橙 3颗葡萄 不是[苹果,橙,葡萄]。
这是我的代码:
function myArray() {
var ss, s, s2, a, b;
ss = SpreadsheetApp.getActive();
s = ss.getSheetByName("BSP_SampleList").getRange(2, 22, 22).getValues();
s2 = ss.getSheetByName("BSP_SampleList").getRange(2, 26, 26).getValues();
a = [];
a.push(s[0]);
b = [];
b.push(s2[0]);
for (var n = 1; n < s.length; n++) {
if (a.join().indexOf(s[n].join()) == -1) {
a.push(s[n])}}
for (var m = 1; m < s2.length; m++) {
if (b.join().indexOf(s2[m].join()) == -1) {
b.push(s2[m])
Logger.log(b.length)}}
var data = ss.getSheetByName("Sheet1").getDataRange().getValues();
var TSCAnumb = ss.getSheetByName("BSP_SampleList").getDataRange().getValues();
var TSCAnumbsheet = ss.getSheetByName("Sheet1");
var TSCAnumb2 = ss.getSheetByName("BSP_SampleList");
var Emailsheet = ss.getSheetByName("Email");
var Rangea = a.length
var Rangeb = b.length
Logger.log(Rangea)
for(var i = 0; i<data.length;i++){
if(data[i][0] == TSCAnumb[1][0]){ //[0] = column A
TSCAnumbsheet.getRange(i+1,2,1,1).setValue([a.join(', ')]) //container number
TSCAnumbsheet.getRange(i+1,3,1,1).setValue([b.join(', ')]) //container name
TSCAnumbsheet.getRange(i+1,7,1,1).setValue(TSCAnumb2.getLastRow()-1) //number of samples
TSCAnumbsheet.getRange(i+1,8,1,1).setValue(TSCAnumb2.getRange("A3").getValue()) //sample type
Emailsheet.getRange(2,4,1,1).setValue(TSCAnumb2.getRange("A2").getValue()) //TSCAbatch
Emailsheet.getRange(2,5,Rangea,1).setValue(a)
Emailsheet.getRange(2,6,Rangeb,1).setValue(b)
}
else{
Emailsheet.getRange(2,4,1,1).clearContent(); //TSCAbatch
}
//Emailsheet.getRange(i+1,4,1,1).setValue(TSCAnumb2.getRange("A2").getValue()) //TSCAnumb
//Emailsheet.getRange(i+1,5,1,1).setValue([a.join(', ')]) //container number
//Emailsheet.getRange(i+1,6,1,1).setValue([b.join(', ')]) //container name
}
}