从电子表格创建新的电子表格

时间:2020-04-28 19:01:57

标签: google-apps-script google-sheets

我正在创建一个工作表,该工作表可以创建一系列相互影响以帮助运行模拟的工作表。该项目的一部分涉及创建一系列表(单个计分表),这些表只能由游戏中的单个玩家访问。我希望使用的代码如下,但是我遇到了一系列问题。首先是它说我没有运行SpreadsheetApp.create的权限。我花了大约一个小时在网上四处寻找解决方法,但只是不了解它,找不到一个好的答案。第二个问题,甚至可能更广泛的问题是,使用GAS与不同的电子表格进行交互(即不在同一电子表格中)似乎异常复杂。在项目的后续阶段,我们将不得不从这些工作表中检索信息,等等。如果通过脚本很难做到这一点,则可能必须考虑解决方法。

/** @OnlyCurrentDoc */
function individualSheets(){
  var playerarray = playerArray();
  var spreadsheet = SpreadsheetApp.getActive();
  var spreadsheetlinks = []
  //creates individual sheet for each player, then adds the link of their sheet to a list
  for(i=0;i<playerarray.length;i++){
    var spreadsheetname = playerarray[i];
    var newspreadsheet = SpreadsheetApp.create(spreadsheetname);
    spreadsheetlinks.push(DriveApp.getUrl(newspreadhseet));
  }
  //pasting the links of each player in the appropriate sheet
  for(i=0;i<spreadsheetlinks.length;i++){
    spreadsheet.setActiveSheet("PlayerInfo").getRange('D'+(i+1)).activate()
    spreadsheet.getCurrentCell.setValue(spreadhseetlinks[i])
  }
}

1 个答案:

答案 0 :(得分:0)

Apps脚本在同一脚本中使用多个电子表格没有困难。 我会添加另一个数组来存储Ids,因此您不必从网址中获取它们:

var spreadsheetlinks = []
var spreadsheetIds = [];
  //creates individual sheet for each player, then adds the link of their sheet to a list
  for(i=0;i<playerarray.length;i++){
    var spreadsheetname = playerarray[i];
    var newspreadsheet = SpreadsheetApp.create(spreadsheetname);
    spreadsheetlinks.push(DriveApp.getUrl(newspreadhseet));
    spreadsheetIds.push(newspreadsheet.getId);
  }

您可以使用openById打开电子表格,因此可以无限使用其中的电子表格:

var sprSheet1 = SpreadsheetApp.openById('id 1');
var sprSheet2 = SpreadsheetApp.openById('id 2');
var sprSheet3 = SpreadsheetApp.openById('id 3');
...

甚至更好:

var sprSheets = [];
for (var j = 0; j < spreadsheetIds.length; j++){

   sprSheets.push(SpreadsheetApp.openById(spreadsheetIds[j]);

}

关于SpreadsheetApp.create问题,请确保您已授权所需的范围:

使用此方法的脚本需要使用以下一项或多项授权 以下范围:

https://www.googleapis.com/auth/spreadsheets.currentonly https://www.googleapis.com/auth/spreadsheets

您可以在Apps脚本View > Manifest file中检查它们。如果您从未触摸过this,它们将不会显示。您可以手动添加它们:

"oauthScopes": [
    "https://www.googleapis.com/auth/spreadsheets",
    "https://www.googleapis.com/auth/drive.file"
  ]

如果在创建电子表格时仍然遇到权限问题,则可能需要检查playerArray函数以查看其是否实际上在返回字符串。

相关问题