我有一个文件夹,其中包含大约 140 个 google 工作表和一个主要的独立 google 脚本,我使用每个工作表中的库脚本调用该脚本,但需要添加/更新附加到每个 google 工作表脚本的所有脚本。目前我发现的唯一方法是打开每个工作表脚本并添加库脚本保存并继续,但 140 个工作表需要很长时间。我知道我需要添加或更新脚本的所有工作表都在一个文件夹中,所以我想我可以使用类似的东西来循环所有 gsheet,但无法找到从这里编辑脚本的方法...
function scriptupdate() {
var folder = DriveApp.getFolderById('FOLDER CONTAINING THE GSHEETS ID');
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
Logger.log("File Name is "+file.getName());
Logger.log("File ID is "+file.getId());
}
}
我不确定我想做的事情是否可行,但如果可行的话,我会尝试节省大量时间,但非常感谢提供的任何帮助和指导
最佳答案
回答
您可以create和 update使用 projects 的项目及其内容资源方法。由于这些在 Apps Script
中没有内置服务,因此必须使用 urlFetchApp.fetch 调用它们。 .
编写函数时,请记住将它们放在重音符号 (`) 之间。您可以使用组合键Ctrl + Shift + I
来修复整个脚本文件中的所有缩进和间距。
代码
function scriptupdate() {
// GET FILES
var folder = DriveApp.getFolderById('FOLDER CONTAINING THE GSHEETS ID');
var files = folder.getFiles();
while (files.hasNext()) {
// GET FILE INFORMATION
var file = files.next();
var name = file.getName()
var fileId = file.getId()
// CREATE CONTAINER-BOUND SCRIPT
var url = 'https://script.googleapis.com/v1/projects'
var formData = {
'title': name,
'parentId': fileId
};
var options = {
method: 'post',
headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
payload: formData,
muteHttpExceptions: true
};
var res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText())
var scriptId = res["scriptId"]
// UPDATE PROJECT CONTENT
var url = 'https://script.googleapis.com/v1/projects/' + scriptId + '/content';
var formData = {
"files": [
{
"name": "appsscript",
"type": "JSON",
"source": `{
"timeZone": "America/New_York",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}`
},
{
"name": "main",
"source":
`function main() {
console.log('hello world')
}`,
"type": "SERVER_JS"
}
]
}
var options = {
method: 'put',
contentType: 'application/json',
payload: JSON.stringify(formData),
headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
muteHttpExceptions: true
};
var res = UrlFetchApp.fetch(url, options).getContentText()
console.log(res)
}
}
引用
关于google-apps-script - 使用另一个脚本更新谷歌工作表脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66146276/