【发布时间】:2021-05-05 18:28:51
【问题描述】:
对于这个看似藏身处的问题,我很抱歉,但我不得不问。对我如此赤裸裸。
我正在使用谷歌应用脚本并试图实现以下目标。我有两本 Google 电子表格书籍。
1.) 书 A 只有一张。
2.) 书 B 有 10 张。
1.) 在书 A 的工作表中,A 列包含文本值范围。例如:ALBWA、AUSCE、AUSLN、BFLCB
2. 在 B 册中,有多个按照 A 册表中的值命名的表。
例如:书 B,表 1 名称 = ALBWA,表 2 名称 = AUSCE 等...
3.在同一个单元格(“G3”)的所有这些表格中都有一个值。
我想要实现的目标是:使用脚本获取 A 书工作表的所有文本值并在 B 书中搜索工作表。如果找到工作表,则获取“G3”值并将其设置在列中B 的书 A 前面的匹配文本。如果工作表“ALBWA”“G23”有一个名为“ABC”的文本,则应将其粘贴到 B 列中的 Book A 工作表,如 A1 = ALBWA 和 B1 应为“ABC”。这需要重复,直到覆盖所有分页。
我知道我需要使用 for 循环,并且我正在尽力而为。我设法让它工作,但它只获得最后一个值并且只返回最后一张表和值。代码如下。
function testSplit(){
var gSheet = SpreadsheetApp.openById("1q0tZMrvCvrH4dsQ0zx8GqI8mqZUsLcEGKu3IHfVrJ2M");
var sheet = gSheet.getSheetByName("RS_Tharalsdson");
var range_input = sheet.getRange("G2:G").getValues();
var filtered_input = range_input.filter(String); //Eliminating all the empty values
var ss =SpreadsheetApp.getActive();
var shA =ss.getSheets();
for(i=1;i<=filtered_input.length;i++){
for(var j=1;j<shA.length;j++){
var txt = sheet.getRange(1+i,7).getValue(); //Get the values of each cell individually
var sheetName = shA[j].getName();
if(txt==sheetName){
console.log(sheetName)
var sheet_1 = ss.getSheetByName(sheetName);
var cell = sheet_1.getRange(3,7);
var allVals = cell.getValues();
var strVal = allVals.toString();
//Only get the Time from the text in Tharaldson Group
var array1 = [{}];
var string1 = strVal;
array1 = string1.split(":");
var ddLine = array1[3]+":"+array1[4];
//Pasting the deadline to the relevant cell of the target sheet
sheet.getRange(1+i,9).setValue(ddLine);
console.log("Success");
}
}
}
}
如果有好心人能帮我解决这个问题,我将不胜感激。非常感谢您。
【问题讨论】:
标签: javascript google-apps-script google-sheets google-sheets-formula google-sheets-api