基本はアカウントの権限で制限するのですが、それだけではログインしたまま放置されたパソコンなどに対応できないため。
作業前にバックアップを。ダウンロード、エクセル形式。これを暗号化してGoogleドラム部に保存して何かあった時に戻せるようにしておきます。
多分エクセルなら何とでも暗号化できるはず。
勿論ファイルの共有は無しで。
暗号化の
これは一応試してみましたが、結構微妙。
暗号化も変更履歴になってしまうのですね。日本非対応となっていたし、もしかしてメモは暗号化してくれないかもしれません。
とりあえずモバイルPCでは指紋認証が無いとGoogleにログインできないようにしようかと。
では、一定時間でGoogleからログアウトしてしまえばいいのではなかろうか?
特定スプレッドシートを開いている間や、GASで指定してログアウトすればいいかもしれない。
二段階認証をONに。
しかし、このデバイスでは次回から表示しないがデフォルトでチェックが付いているのを外す必要がありそう。
Chromeでパスワードを保存しない。Googleのオートコンプリートを削除。
これでとりあえずパスワードを入力する必要がある状態になりました。
少なくともモバイルPCでは必須なのではなかろうかと。今更ながら
Firefoxでも同様の設定にしておく必要がある。
完了。
あと、二段階認証をオフにしてはいけない。これ何とか自動でチェックをつかなくする方法あるのかな?
とりあえず条件によっては自動ログアウトするスクリプトを作るかなと。
参考、これでとりあえずリダイレクトはできた。
function Logout_from_Google(){
var url = "https://accounts.google.com/Logout";
var script = "";
var html = HtmlService.createHtmlOutput(script);
SpreadsheetApp.getUi().showModalDialog(html, 'Open ' + url);
};
後は無操作時間によってこのスクリプトが作動するようにしたい。
現在時刻取得、参考
function GetTimeNow(){
var now = new Date();
date = Utilities.formatDate(now, "Asia/Tokyo", "yyyy/MM/dd hh:mm:ss");
Logger.log(date);
}
と言うか更新日時を保存、参考
function drawLastUpdateString() {
//var sheet = SpreadsheetApp.getActiveSheet();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('口座');
var cell = sheet.getRange('J2');
var date = new Date();
var string = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss');
Logger.log(string);
cell.setValue(string);
}
実行する関数:drawLastUpdateString
実行するデプロイ:Head
イベントのソース:スプレッドシートから
イベントの種類:編集時
エラー通知設定:毎日
とおもったんだけど、どうもシートにnowを設定すれば編集したときに更新されてるっぽい
=now()
Days.jsを使う事にしました。解説参考
function Judge_Logout(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('口座');
var cell = sheet.getRange('I2');
var msgcell = sheet.getRange('J2');
var value = cell.getValue();
value = Utilities.formatDate(value, "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss");
// var value = '2022/03/03 17:27:12';
Logger.log(value);
//var nowtime = GetTimeNow();
//Logger.log(nowtime);
//var termDay = (nowtime - value) / 86400000;
//Logger.log(termDay);
dayjs.dayjs.locale('ja');
const d1 = dayjs.dayjs();
//Logger.log(d1);
Logger.log(d1.format('YYYY/MM/DD HH:mm:ss'));
var diff_m = d1.diff(value, 'm', false , true);
console.log(diff_m);
msgcell.setValue('無操作時間='+diff_m);
if(diff_m > 10){
msgcell.setValue('ログアウトします');
Logout_from_Google();
}
}
いや、ダメだこれ。スクリプトから更新された場合も更新時刻が変更されて無操作時間が0分のままになっているようです。
よって、やはりこちらを使ってみます。
drawLastUpdateString
function drawLastUpdateString() {
//var sheet = SpreadsheetApp.getActiveSheet();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('口座');
var cell = sheet.getRange('I2');
var date = new Date();
var string = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss');
Logger.log(string);
cell.setValue(string);
}













