아주 간단한 질문입니다.사용자가 볼 수없는 스프레드 시트의 '소유자'로 Google 스크립트를 실행하려면 어떻게해야합니까?
저는 "MasterSheet"라는 별도의 시트 (여기에서 여러 유용한 Q &의 도움을 받음)로 셀에 글을 쓰는 Google Script를 만들었습니다. 이것은 궁극적으로 개별 사용자에게 제공하는 여러 시트에 임베디드 배포됩니다.
사용자가 "MasterSheet"에 대한 수정 권한을 가지고있을 때 완벽하게 작동하지만 비공개 상태로 유지해야합니다. 즉 나 외에는 볼 수 없습니다.
배경 : 각 '사용자 시트'에서 IMPORTRANGE는 사용자가 볼 수있는 '마스터 시트'에서 열을 가져 오는 데 사용되며 스크립트는 사용자가 마스터 시트에 주석을 추가 할 수있게합니다. 하나의 통합 된 시트에서 다양한 사용자의 주석이있는 모든 열을 보려면 MasterSheet를 볼 수 있지만 개별 사용자는이를 볼 수 없어야합니다.
시트를 작성하기위한 특정 스크립트는 매우 일반적이다 :
function saveCommentToMasterSheet(form){
var company = form.company,
contact = form.contactselect,
comment = form.message ,
ss = SpreadsheetApp.openById("MASTERSHEET_ID").getSheetByName('MasterSheet');
if(company=="all"){
var row = findCell(contact);
} else {
var row = findCell2(contact,company);
}
//^The above finds the specific row number relating to the entry the user wants to comment on.
var cell2 = ss.getRange(row,11);
// ^In this case '11' is the column related to this sheet's specific user, I've made separate sheets for each user that are identical except this column number
cell2.setValue(comment);
}
내가 링크가있는 사람에게 MasterSheet 편집 할 수 있다고 생각하지만, 오히려 스크립트가 특히로서,이를 방지 것 각 스프레드 시트에 포함되어 있으므로 사용자가 방금 본 경우 MasterSheet ID를 찾을 수 있습니다.
나는 실행 API를 사용하여 나를 스크립트로 실행할 수 있음을 알고 있지만 솔직히 말해서 나는 그 일을 이해하기 위해 조금 고생했다.
죄송합니다. 간단한 질문을 드려 죄송합니다. 좋은 검색 결과를 얻었지만 알아낼 수 없습니다.
감사합니다. 알렉스
N.B. 이 Running a google script from within a spreadsheet, but as a different user? 비슷한 질문을 보이지만 정말 사용자의 스프레드 시트 내에서 주석 시스템을 유지하고 싶습니다.
당신은 사용자에게 배포 된 스프레드 시트에서 마스터 스프레드 시트에 POST 요청을 할 수 있습니다
마스터 스프레드 시트에 바인드 된 프로젝트에'doPost (e)'함수를 넣으십시오. 그런 다음 스크립트를 웹 응용 프로그램으로 게시하십시오. 사용자에게 배포 될 스프레드 시트에 원래 함수를 남겨두고 제거하려는 모든 코드는 마스터 스프레드 시트에 바인딩 된 프로젝트의 함수로 남겨 둡니다.현재 마스터 스프레드 시트에 데이터를 쓰는 현재 함수는 더 이상 직접 수행하지 않습니다. 분산 스프레드 시트의 현재 함수는 마스터 스프레드 시트에서'doGet (e) '함수를 호출하고'e'에 데이터를 보냅니다. –