用于将数字转换为其相关希伯来字母等价物的 Google Apps 脚本,反之亦然

时间:2021-05-11 21:28:32

标签: javascript arrays google-apps-script google-sheets number-formatting

我完全是 Google Apps 脚本的新手。如果你们能帮我弄清楚如何写出希伯来语对应的英文数字,​​反之亦然,只需按一两个按钮,我将不胜感激。我试图通过 replaceinSheet 函数运行以下代码行,但只要数字大于 10,它就会抛出一个错误:

function onOpen(){
  SpreadsheetApp.getUi() 
  .createMenu('convert into HEBREW numerals')
  .addItem('NUM TO HEBREW', 'runReplaceInSheet')
  .addItem('HEBREW TO NUM', 'runReplaceInSheet') 
  .addToUi();
}
  
  function runReplaceInSheet(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var values = sheet.getDataRange().getValues();  

  // Replace values
  replaceInSheet(values, '1', 'א‎');
replaceInSheet(values, '2', 'ב‎');
replaceInSheet(values, '3', 'ג');
replaceInSheet(values, '4', 'ד‎');
replaceInSheet(values, '5', 'ה');
replaceInSheet(values, '6', 'ו‎');
replaceInSheet(values, '7', 'ז');
replaceInSheet(values, '8', 'ח‎');
replaceInSheet(values, '9', 'ט‎');
replaceInSheet(values, '10', 'י‎');
replaceInSheet(values, '11', 'יא');
replaceInSheet(values, '12', 'יב‎');
replaceInSheet(values, '13', 'יג‎');
replaceInSheet(values, '14', 'יד');
replaceInSheet(values, '15', 'טו');
replaceInSheet(values, '16', 'טז');
replaceInSheet(values, '17', 'יז‎');
replaceInSheet(values, '18', 'יח‎‎');
replaceInSheet(values, '19', 'יט‎‎‎');
replaceInSheet(values, '20', 'כ');
replaceInSheet(values, '21', 'כא‎');
replaceInSheet(values, '22', 'כב');
replaceInSheet(values, '23', 'כג');
replaceInSheet(values, '24', 'כד');
replaceInSheet(values, '25', 'כה');
replaceInSheet(values, '26', 'כו‎');
replaceInSheet(values, '27', 'כז');
replaceInSheet(values, '28', 'כח');
replaceInSheet(values, '29', 'כט‎');
replaceInSheet(values, '30', 'ל');
replaceInSheet(values, '31', 'לא');
replaceInSheet(values, '32', 'לב‎');
replaceInSheet(values, '33', 'לג');
replaceInSheet(values, '34', 'לד');
replaceInSheet(values, '35', 'לה');
replaceInSheet(values, '36', 'לו‎');
replaceInSheet(values, '37', 'לז');
replaceInSheet(values, '38', 'לח‎');
replaceInSheet(values, '39', 'לט‎');
replaceInSheet(values, '40', 'מ');
replaceInSheet(values, '41', 'מא‎');
replaceInSheet(values, '42', 'מב‎');
replaceInSheet(values, '43', 'מג');
replaceInSheet(values, '44', 'מד');
replaceInSheet(values, '45', 'מה');
replaceInSheet(values, '46', 'מו');
replaceInSheet(values, '47', 'מז');
replaceInSheet(values, '48', 'מח‎');
replaceInSheet(values, '49', 'מט');
replaceInSheet(values, '50', 'נ');
replaceInSheet(values, '51', 'נא‎');
replaceInSheet(values, '52', 'נב');
replaceInSheet(values, '53', 'נג');
replaceInSheet(values, '54', 'נד');
replaceInSheet(values, '55', 'נה');
replaceInSheet(values, '56', 'נו‎');
replaceInSheet(values, '57', 'נז');
replaceInSheet(values, '58', 'נח');
replaceInSheet(values, '59', 'נט');
replaceInSheet(values, '60', 'ס');
replaceInSheet(values, '61', 'סא‎');
replaceInSheet(values, '62', 'סב');
replaceInSheet(values, '63', 'סג');
replaceInSheet(values, '64', 'סד');
replaceInSheet(values, '65', 'סה');
replaceInSheet(values, '66', 'סו');
replaceInSheet(values, '67', 'סז');
replaceInSheet(values, '68', 'סח‎');
replaceInSheet(values, '69', 'סט');
replaceInSheet(values, '70', 'ע');
replaceInSheet(values, '71', 'עא');
replaceInSheet(values, '72', 'עב');
replaceInSheet(values, '73', 'עג');
replaceInSheet(values, '74', 'עד‎');
replaceInSheet(values, '75', 'עה');
replaceInSheet(values, '76', 'עו');
replaceInSheet(values, '77', 'עז');
replaceInSheet(values, '78', 'עח‎');
replaceInSheet(values, '79', 'עט‎');
replaceInSheet(values, '80', 'פ');
replaceInSheet(values, '81', 'פא');
replaceInSheet(values, '82', 'פב');
replaceInSheet(values, '83', 'פג');
replaceInSheet(values, '84', 'פד‎');
replaceInSheet(values, '85', 'פה');
replaceInSheet(values, '86', 'פו');
replaceInSheet(values, '87', 'פז');
replaceInSheet(values, '88', 'פח');
replaceInSheet(values, '89', 'פט');
replaceInSheet(values, '90', 'צ');
replaceInSheet(values, '91', 'צא');
replaceInSheet(values, '92', 'צב');
replaceInSheet(values, '93', 'צג');
replaceInSheet(values, '94', 'צד');
replaceInSheet(values, '95', 'צה');
replaceInSheet(values, '96', 'צו');
replaceInSheet(values, '97', 'צז');
replaceInSheet(values, '98', 'צח‎');
replaceInSheet(values, '99', 'צט');

  // Write all updated values to the sheet, at once
  sheet.getDataRange().setValues(values);
}

function replaceInSheet(values, to_replace, replace_with) {
  //loop over the rows in the array
  for(var row in values){
    //use Array.map to execute a replace call on each of the cells in the row.
    var replaced_values = values[row].map(function(original_value) {
      return original_value.toString().replace(to_replace,replace_with);
    });

    //replace the original row values with the replaced values
    values[row] = replaced_values;

  }
}
  

另外,如何将代码的第一部分更改为仅针对特定数据范围(例如 B2:E5),而不是整个工作表?

1 个答案:

答案 0 :(得分:0)

我知道您想修改该代码以仅影响特定数据范围(即 B2:E5)。在这种情况下,您只需要在获取范围时解决它。这是原始代码:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();

要选择特定范围而不是数据范围,让我们将 Sheet.getDataRange() 替换为 Sheet.getRange(2, 2, 3, 3)。这将返回 B2:E5。最终结果应如下所示:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var values = sheet.getRange(2, 2, 3, 3).getValues();
相关问题