Javascript 在多个不同的表(谷歌工作表)中使用一个谷歌脚本中的函数

Javascript 在多个不同的表(谷歌工作表)中使用一个谷歌脚本中的函数,javascript,google-apps-script,google-sheets,google-docs,Javascript,Google Apps Script,Google Sheets,Google Docs,我写了谷歌脚本。在这个脚本中,我有一个函数,我需要在250多个不同的表(谷歌表单)中使用。问题是-如何使它在每个表中都可以访问 要使脚本或自定义函数在其他Google工作表中可用,请将其作为库发布 布鲁斯·麦克弗森(Bruce Mcpherson)就如何做到这一点发表了一篇很好的文章:要使脚本或自定义函数在其他Google工作表中可用,请将其作为库发布 布鲁斯·麦克弗森(Bruce Mcpherson)就如何做到这一点发表了一篇很好的帖子:是的,这是可能的 两种选择: 创建一个应用程序脚本项目

我写了谷歌脚本。在这个脚本中,我有一个函数,我需要在250多个不同的表(谷歌表单)中使用。问题是-如何使它在每个表中都可以访问

要使脚本或自定义函数在其他Google工作表中可用,请将其作为库发布


布鲁斯·麦克弗森(Bruce Mcpherson)就如何做到这一点发表了一篇很好的文章:

要使脚本或自定义函数在其他Google工作表中可用,请将其作为库发布

布鲁斯·麦克弗森(Bruce Mcpherson)就如何做到这一点发表了一篇很好的帖子:

是的,这是可能的

两种选择:

  • 创建一个应用程序脚本项目,该项目调用250多个电子表格,进行操作并更新生成结果的每个电子表格
在此,您将找到一系列教程,从应用程序脚本开始。

  • 创建一个可以从电子表格的任何单元格调用的函数,就像调用任何其他默认函数(如SUM()一样)
在本文档中,您将了解如何执行第二个选项。 是的,这是可能的

两种选择:

  • 创建一个应用程序脚本项目,该项目调用250多个电子表格,进行操作并更新生成结果的每个电子表格
在此,您将找到一系列教程,从应用程序脚本开始。

  • 创建一个可以从电子表格的任何单元格调用的函数,就像调用任何其他默认函数(如SUM()一样)
在本文档中,您将了解如何执行第二个选项。
好的,我喜欢这个解决方案。在我的例子中,我需要更改的文件放在不同的文件夹中,并且具有相似的名称

// function that i need to execute
function updatePrices(sheetId){    
  // do some staff
  var activeSpreadsheet = SpreadsheetApp.openById(sheetId);
  var histPricesSheet = activeSpreadsheet.getSheetByName(someSheetName);
  ....
  var cell = histPricesSheet.getRange(range);
  cell.setValues(someData);
}


function walkFolders(folderId){    
  // function that walk by folders and get ids of spradsheeds 
  and call func that I need in each spradsheed that I need

  var fin_fold = DriveApp.getFolderById(folderId); 
  var folders = fin_fold.getFolders();

  while (folders.hasNext()) {

    var folder = folders.next();
    var files = folder.searchFiles('title contains "карточка"');

    while (files.hasNext()){

      var file = files.next();

      updatePrices(file.getId());    // call my function to every spreadsheet
      Logger.log("обновлено");
    }
  }
}

walkFolders("folder ID wich contain folders with files to change");

好的,我喜欢这个解决方案。在我的例子中,我需要更改的文件放在不同的文件夹中,并且具有相似的名称

// function that i need to execute
function updatePrices(sheetId){    
  // do some staff
  var activeSpreadsheet = SpreadsheetApp.openById(sheetId);
  var histPricesSheet = activeSpreadsheet.getSheetByName(someSheetName);
  ....
  var cell = histPricesSheet.getRange(range);
  cell.setValues(someData);
}


function walkFolders(folderId){    
  // function that walk by folders and get ids of spradsheeds 
  and call func that I need in each spradsheed that I need

  var fin_fold = DriveApp.getFolderById(folderId); 
  var folders = fin_fold.getFolders();

  while (folders.hasNext()) {

    var folder = folders.next();
    var files = folder.searchFiles('title contains "карточка"');

    while (files.hasNext()){

      var file = files.next();

      updatePrices(file.getId());    // call my function to every spreadsheet
      Logger.log("обновлено");
    }
  }
}

walkFolders("folder ID wich contain folders with files to change");

这样,只有在每个表中创建新项目后,我才能在工作表中使用我的func,并使用我的func导入该库,并从导入的项目中在新项目中调用新func?是否有一种解决方案可以只在单元格中写入
=myLib.myFunc()
?这样,我只能在每个表中创建新项目后在工作表中使用我的func,并使用我的func导入该库,并从导入的项目在新项目中调用新func?是否有一种解决方案可以只在单元格中写入
=myLib.myFunc()