将一列字符串从一个 Google Sheet 传递到另一个 Google Sheet 并回读在第二个 sheet 中计算的相应输出
Passing a column of string from one Google Sheet to another and readback corresponding outputs calculated in the second sheet
我在同一个 Google 工作簿文件中有 2 个 Sheet:
- Sheet #1:单元格中包含一些字符串值 A1:A100
- Sheet #2: 已经设计为根据单元格 C1 中输入的字符串计算单元格 D1 中的数字输出
我想要 运行 一个允许将 Sheet1 A1:A100 的每个实体逐一传递给 Sheet2 C1 的循环。接下来,我想从单元格 D1 回读相应的 Sheet2 输出并将其填充到 Sheet1 个单元格 B1:B100.
中
问题:
有没有办法通过在 Google Sheets 本身中编码来实现这一点?如果没有,是否有其他方法,例如使用 Python?
描述
这是一个 Google 应用程序脚本,它将遍历符号和 return 来自 Sheet2!D1 的计算值。
它是从一个新的菜单项测试中执行的。
Code.gs
function onOpen() {
let ui = SpreadsheetApp.getUi();
let menu = ui.createMenu("Test");
menu.addItem("Run Test","runTest");
menu.addToUi();
}
function runTest() {
try {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
let symbols = sheet.getDataRange().getValues();
symbols.forEach( symbol => getResults(symbol) );
symbols = symbols.filter( symbol => symbol[0] !== "" );
sheet.getRange(1,1,symbols.length,symbols[0].length).setValues(symbols);
}
catch(err) {
SpreadsheetApp.getUi().alert("Error in runTest: "+err);
}
}
function getResults(symbol) {
try {
if( symbol[0] === "" ) return;
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
sheet.getRange(1,3).setValue(symbol[0]);
SpreadsheetApp.flush();
symbol[1] = sheet.getRange(1,4).getValue();
}
catch(err) {
SpreadsheetApp.getUi().alert("Error in getResults: "+err);
}
}
参考
我在同一个 Google 工作簿文件中有 2 个 Sheet:
- Sheet #1:单元格中包含一些字符串值 A1:A100
- Sheet #2: 已经设计为根据单元格 C1 中输入的字符串计算单元格 D1 中的数字输出
我想要 运行 一个允许将 Sheet1 A1:A100 的每个实体逐一传递给 Sheet2 C1 的循环。接下来,我想从单元格 D1 回读相应的 Sheet2 输出并将其填充到 Sheet1 个单元格 B1:B100.
中问题: 有没有办法通过在 Google Sheets 本身中编码来实现这一点?如果没有,是否有其他方法,例如使用 Python?
描述
这是一个 Google 应用程序脚本,它将遍历符号和 return 来自 Sheet2!D1 的计算值。
它是从一个新的菜单项测试中执行的。
Code.gs
function onOpen() {
let ui = SpreadsheetApp.getUi();
let menu = ui.createMenu("Test");
menu.addItem("Run Test","runTest");
menu.addToUi();
}
function runTest() {
try {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
let symbols = sheet.getDataRange().getValues();
symbols.forEach( symbol => getResults(symbol) );
symbols = symbols.filter( symbol => symbol[0] !== "" );
sheet.getRange(1,1,symbols.length,symbols[0].length).setValues(symbols);
}
catch(err) {
SpreadsheetApp.getUi().alert("Error in runTest: "+err);
}
}
function getResults(symbol) {
try {
if( symbol[0] === "" ) return;
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
sheet.getRange(1,3).setValue(symbol[0]);
SpreadsheetApp.flush();
symbol[1] = sheet.getRange(1,4).getValue();
}
catch(err) {
SpreadsheetApp.getUi().alert("Error in getResults: "+err);
}
}
参考