我正在创建一个工作表,该工作表可以创建一系列相互影响以帮助运行模拟的工作表。该项目的一部分涉及创建一系列表(单个计分表),这些表只能由游戏中的单个玩家访问。我希望使用的代码如下,但是我遇到了一系列问题。首先是它说我没有运行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])
}
}
答案 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
函数以查看其是否实际上在返回字符串。