Google App Script + Google Sheet - 遍历活动 sheet 中的每个单元格并添加带有本地单元格地址的公式
Google App Script + Google Sheet - Loop over each cell in active sheet and add formula with local cell address
我四处搜索了一下,但无法完全 find/break 区分完成这项工作所需的信息。抱歉,如果确实已经有一个有效的问题。
我需要:
- 获取有效点差sheet
- Select 分布中的每个单元格sheet
- 将公式注入每个单元格,但关键是它必须将本地单元格地址添加到我注入的公式的末尾。 EG: 如果我输入公式 "=IMPORTRANGE("my.url.com", "My Sheet!!A1") 那么下一个单元格应该是 A2 并且公式应该结束在A2中,从A1重复到AA69。
更全面的了解
我正在将两个单独的 Google 工作表链接在一起。我使用 IMPORTRANGE 读取目标 sheet 的 URL,然后从目标 sheet.
中获取所需的 'Sheet Tab'
然后我有一个目标 sheet 的模板副本,我想在其中复制所有目标信息。 例如:MySheet 是 TargetSheet 的空白副本,我需要使用 IMPORTRANGE 将所有信息从 TargetSheet 复制到 MySheet,但是有许多团队使用相同的布局 sheet 但都有独特的 URLs,我正在构建一个 sheet 生成器,因此脚本大大加快了速度。
我有标准的 sheet grab,效果很好:
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var rangeList = activeSheet.getRange(['A1:AA69']);
我已经从其他变量构建了我的公式,这些变量很容易组合在一起:
// Create a combined formula from above variables, at present the only part missing is the cell to inject this into and closing parenthesis.
var IMPORTRANGE_FORMULACONSTRUCT = IMPORTRANGE_BEGINFORMULA_VALUE + "(" + '"' + SPREADSHEETURLVALUE + '"' + ", " + '"' + IMPORTRANGE_INFORMATIONTAB_VALUE + "!" ;
// Print to Logs (View with Ctrl + Enter)
Logger.log(IMPORTRANGE_FORMULACONSTRUCT);
如何遍历每个单元格并将每个单元格添加到公式的末尾?
感谢帮助。
您可以检索区域中每个单元格的 A1 notation 并将其用作公式中的本地地址。
示例:
function myFunction() {
var IMPORTRANGE_BEGINFORMULA_VALUE = "=IMPORTRANGE";
var SPREADSHEETURLVALUE = "my.url.com"
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var IMPORTRANGE_INFORMATIONTAB_VALUE = activeSheet.getName();
var rangeList = activeSheet.getRange('A1:AA69');
var array=[];
for( var i = 0; i < rangeList.getLastRow(); i++){
array[i]=[];
for( var j = 0; j < rangeList.getLastColumn(); j++){
var notation = activeSheet.getRange(i+1,j+1).getA1Notation();
var notation = rangeList.getCell(i+1,j+1).getA1Notation();
// Create a combined formula from above variables, at present the only part missing is the cell to inject this into and closing parenthesis.
var IMPORTRANGE_FORMULACONSTRUCT = IMPORTRANGE_BEGINFORMULA_VALUE + "(" + '"' + SPREADSHEETURLVALUE + '"' + ", " + '"' + IMPORTRANGE_INFORMATIONTAB_VALUE + "!" + notation + '")' ;
// Print to Logs (View with Ctrl + Enter)
array[i].push(IMPORTRANGE_FORMULACONSTRUCT);
}
}
rangeList.setValues(array);
}
请记住,如果您在较大范围内迭代,此代码可能会很慢。
我四处搜索了一下,但无法完全 find/break 区分完成这项工作所需的信息。抱歉,如果确实已经有一个有效的问题。
我需要:
- 获取有效点差sheet
- Select 分布中的每个单元格sheet
- 将公式注入每个单元格,但关键是它必须将本地单元格地址添加到我注入的公式的末尾。 EG: 如果我输入公式 "=IMPORTRANGE("my.url.com", "My Sheet!!A1") 那么下一个单元格应该是 A2 并且公式应该结束在A2中,从A1重复到AA69。
更全面的了解
我正在将两个单独的 Google 工作表链接在一起。我使用 IMPORTRANGE 读取目标 sheet 的 URL,然后从目标 sheet.
中获取所需的 'Sheet Tab'
然后我有一个目标 sheet 的模板副本,我想在其中复制所有目标信息。 例如:MySheet 是 TargetSheet 的空白副本,我需要使用 IMPORTRANGE 将所有信息从 TargetSheet 复制到 MySheet,但是有许多团队使用相同的布局 sheet 但都有独特的 URLs,我正在构建一个 sheet 生成器,因此脚本大大加快了速度。
我有标准的 sheet grab,效果很好:
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var rangeList = activeSheet.getRange(['A1:AA69']);
我已经从其他变量构建了我的公式,这些变量很容易组合在一起:
// Create a combined formula from above variables, at present the only part missing is the cell to inject this into and closing parenthesis.
var IMPORTRANGE_FORMULACONSTRUCT = IMPORTRANGE_BEGINFORMULA_VALUE + "(" + '"' + SPREADSHEETURLVALUE + '"' + ", " + '"' + IMPORTRANGE_INFORMATIONTAB_VALUE + "!" ;
// Print to Logs (View with Ctrl + Enter)
Logger.log(IMPORTRANGE_FORMULACONSTRUCT);
如何遍历每个单元格并将每个单元格添加到公式的末尾?
感谢帮助。
您可以检索区域中每个单元格的 A1 notation 并将其用作公式中的本地地址。
示例:
function myFunction() {
var IMPORTRANGE_BEGINFORMULA_VALUE = "=IMPORTRANGE";
var SPREADSHEETURLVALUE = "my.url.com"
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var IMPORTRANGE_INFORMATIONTAB_VALUE = activeSheet.getName();
var rangeList = activeSheet.getRange('A1:AA69');
var array=[];
for( var i = 0; i < rangeList.getLastRow(); i++){
array[i]=[];
for( var j = 0; j < rangeList.getLastColumn(); j++){
var notation = activeSheet.getRange(i+1,j+1).getA1Notation();
var notation = rangeList.getCell(i+1,j+1).getA1Notation();
// Create a combined formula from above variables, at present the only part missing is the cell to inject this into and closing parenthesis.
var IMPORTRANGE_FORMULACONSTRUCT = IMPORTRANGE_BEGINFORMULA_VALUE + "(" + '"' + SPREADSHEETURLVALUE + '"' + ", " + '"' + IMPORTRANGE_INFORMATIONTAB_VALUE + "!" + notation + '")' ;
// Print to Logs (View with Ctrl + Enter)
array[i].push(IMPORTRANGE_FORMULACONSTRUCT);
}
}
rangeList.setValues(array);
}
请记住,如果您在较大范围内迭代,此代码可能会很慢。