これは、単一ユーザーが認証プロセスを単純かつ明確にするための可能なソリューションです。同じスプレッドシートに複数のユーザーがいるため、ユースケースに合わないことはわかっていますが、興味のある部分が含まれている可能性があります.
コードとSS の例を次に示します (編集アクセス権を取得するためにコピーを作成します。一度しか機能しないことを忘れないでください! (少なくとも承認に関する限り、いつでもシートの削除を元に戻すことができます!!) )
function onOpen(){
if(SpreadsheetApp.getActiveSpreadsheet().getNumSheets()==1){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [{name: "test", functionName: "test"},
];
ss.addMenu("Recherche",menuEntries);// custom menu
}
} // menu appears only if authorization has been processed
function test(){
if(SpreadsheetApp.getActiveSpreadsheet().getNumSheets()==2){
var ss = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(ss.getSheets()[0]);// make first sheet active to be sure
var del = ss.deleteActiveSheet();
onOpen;
}
Logger.log(findThelastRow('d',0))
}
//
//
function findThelastRow(column,index){
var doc = SpreadsheetApp.getActiveSpreadsheet();
var lastRow = doc.getSheets()[index].getLastRow()+1;// check last row on the appropriate sheet
var coldata = doc.getSheets()[index].getRange(column+2+':'+column+lastRow).getValues();// I begin on Row 2 just as you did
for(i=coldata.length-1;i>=0;i--){
if(coldata[i][0]!=''){return i+2;break}
}
return 0;
}
この例に入れている関数は単なる例です!
重要なのは、認可が行われたときに最初のシートを削除する部分です。これが十分に明確になることを願っています;-)