我創建了一個包含受保護范圍的 Google 電子表格,因此域用戶無法執行某些任務,例如對作業表進行排序。因此,我創建了一個在我的帳戶(管理員)下運行的 Web 應用程式并執行此操作。當我運行腳本時,反復試驗讓它作業。問題是當其他域用戶呼叫 Web 應用程式時,會引發以下錯誤:

谷歌電子表格代碼:
function onOpen() {
var ui = SpreadsheetApp.getUi();
var m = ui.createMenu('Extra');
m.addItem('↑↓ Surname','sortByName');
m.addItem('↑↓ Section','sortBySection');
m.addItem('↑↓ DOB','sortByDOB');
m.addToUi();
}
function sortByName(){
sortSheet("byName");
}
function sortBySection(){
sortSheet("bySection");
}
function sortByDOB(){
sortSheet("byDOB");
}
function sortSheet(sortType){
if (!isClassSheet()){
return;
}
var sheet = aS.getActiveSheet();
var sheetId = aS.getId();
var baseUrl ="https://script.google.com/a/macros/ourdomain.com/s/xxxx/exec"
var queryString = "?sheetID=" sheetId "&sortType=" sortType "&sheetName=" sheet.getName() "&firstDataRow=" FIRST_DATA_ROW "&classColStudentName=" S_CLASS_COL_STUDENT_NAME "&classColSection=" S_CLASS_COL_SECTION "&classColDOB=" S_STUDENTS_COL_DOB;
var url = encodeURI(baseUrl queryString)
var params = {method: "get", headers: {Authorization: "Bearer " ScriptApp.getOAuthToken()}};
var request = UrlFetchApp.fetch(url,params)
//logsheet.appendRow([request])
Logger.log(request)
}
未系結的 Web 應用代碼:
function doGet(e) {
var param = e.queryString;
var parameters = param.split("&") // This just checks only 7 parameters are present else gives a invalid link
if (param != null && parameters.length == 7){
param = e.parameter;
var sheetId = param.sheetID;
var name = param.sheetName;
var sortType = param.sortType;
var S_CLASS_COL_STUDENT_NAME = Number(param.classColStudentName);
var S_CLASS_COL_SECTION = Number(param.classColSection);
var S_STUDENTS_COL_DOB = Number(param.classColDOB);
var FIRST_DATA_ROW = Number(param.firstDataRow);
} else {
return ContentService.createTextOutput("Bad")
}
try{
var ss = SpreadsheetApp.openById(sheetId)
var sheet = ss.getSheetByName(name)
var dataRange = sheet.getRange(FIRST_DATA_ROW,1,(sheet.getLastRow() - FIRST_DATA_ROW 1),sheet.getLastColumn());
switch (sortType){
case "byName":
dataRange.sort({column: S_CLASS_COL_STUDENT_NAME, ascending: true});
break;
case "bySection":
dataRange.sort([{column: S_CLASS_COL_SECTION, ascending: true}, {column: S_CLASS_COL_STUDENT_NAME, ascending: true}]);
break;
case "byDOB":
dataRange.sort([{column: S_STUDENTS_COL_DOB, ascending: true}, {column: S_CLASS_COL_STUDENT_NAME, ascending: true}]);
break;
}
}
catch (err){
return ContentService.createTextOutput(err)
}
return ContentService.createTextOutput("Success")
}
部署設定

uj5u.com熱心網友回復:
對于對此感興趣的任何人,我已閱讀此檔案,其中解釋了 Web 應用程式必須與通過電子表格呼叫它的用戶共享。感謝@TheMaster 指出并感謝@Tanaike 撰寫檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/435854.html
