获取 sheet 名称无法正常工作或在使用循环复制到新的 sheet 后无法自动更新
get sheet names not work properly or not auto update after use loop to copy to new sheets
我使用此循环从现有 sheet Main
创建或复制到新的 sheet
var ss = SpreadsheetApp.getActiveSpreadsheet()
for (var sheet = 1; sheet <= 5; sheet++) {
ss.getSheetByName("Main").copyTo(ss).setName(sheet)
}
并且我还在单元格 A1 中填写了公式 sheetname(),这个公式对它显示的那些 sheets "Copy of Main" 它不正确 sheet name as上面的数字“1到5”
(其实数字是我想改的)
function sheetname() {
return SpreadsheetApp.getActiveSpreadsheet().getSheetName()
}
当我手动重新填充 sheetname() 时,它工作得很好。但是当我使用脚本循环时,复制到然后使用自定义公式。它无法正常工作或无法自动更新。
当我不需要手动重新填充时,有什么方法可以完成这项工作吗?或者我可以在循环 "for" 中设置 sheet name 的值吗?
你可以遇到关于这个的最好的文章Automatic Recalculation of Custom Function on Spreadsheet Part 1, Automatic Recalculation of Custom Function on Spreadsheet Part 2
对于你的情况,下一个代码就可以了
var ss = SpreadsheetApp.getActiveSpreadsheet();
for (var sheet = 1; sheet <= 5; sheet++)
ss.getSheetByName("Main").copyTo(ss).setName(sheet);
var temp = Utilities.getUuid();
ss.createTextFinder("=").matchFormulaText(true).replaceAllWith(temp);
ss.createTextFinder(temp).matchFormulaText(true).replaceAllWith("=");
我使用此循环从现有 sheet Main
创建或复制到新的 sheetvar ss = SpreadsheetApp.getActiveSpreadsheet()
for (var sheet = 1; sheet <= 5; sheet++) {
ss.getSheetByName("Main").copyTo(ss).setName(sheet)
}
并且我还在单元格 A1 中填写了公式 sheetname(),这个公式对它显示的那些 sheets "Copy of Main" 它不正确 sheet name as上面的数字“1到5” (其实数字是我想改的)
function sheetname() {
return SpreadsheetApp.getActiveSpreadsheet().getSheetName()
}
当我手动重新填充 sheetname() 时,它工作得很好。但是当我使用脚本循环时,复制到然后使用自定义公式。它无法正常工作或无法自动更新。
当我不需要手动重新填充时,有什么方法可以完成这项工作吗?或者我可以在循环 "for" 中设置 sheet name 的值吗?
你可以遇到关于这个的最好的文章Automatic Recalculation of Custom Function on Spreadsheet Part 1, Automatic Recalculation of Custom Function on Spreadsheet Part 2
对于你的情况,下一个代码就可以了
var ss = SpreadsheetApp.getActiveSpreadsheet();
for (var sheet = 1; sheet <= 5; sheet++)
ss.getSheetByName("Main").copyTo(ss).setName(sheet);
var temp = Utilities.getUuid();
ss.createTextFinder("=").matchFormulaText(true).replaceAllWith(temp);
ss.createTextFinder(temp).matchFormulaText(true).replaceAllWith("=");