私の同僚と協力して、うまく機能する次のGoogle Appsスクリプトを生成しました。
使用方法:列DでのドキュメントのIDのリストで、チェックしたい行を強調表示する(任意の細胞が細かいですが、ちょうど何かを持っている希望行で強調表示)し、「オートメーション」メニューのカスタムを使用して実行します。
結果:所有者は、列Eに
function getOwnerFromValue(val){
var doc = DriveApp.getFileById(val);
var user = doc.getOwner();
return user;
}
function scanRange() {
var range = SpreadsheetApp.getActiveRange();
var start = range.getRow();
var stop = range.getLastRow();
var range = SpreadsheetApp.getActive().getRange("D"+start+":D"+stop)
var resultRange = SpreadsheetApp.getActive().getRange("E"+start+":E"+stop);
var result = [];
range.getValues().forEach(function(obj){
obj = obj[0];
if(obj.trim() != "")
result.push([getOwnerFromValue(obj).getEmail()]);
});
resultRange.setValues(result);
}
function onOpen(){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Get Owners' User",
functionName : "scanRange"
}];
sheet.addMenu("Automation",entries);
}
function onAdd(e){
var editted = e.range;
if(editted.getRow() != 1 && editted.getColumn() == 4) {
Logger.log(getOwnerFromValue(editted.getValue()));
}
}
を返されます