필요한 권한 : https://www.googleapis.com/auth/spreadsheets

Nov 18 2020

URL에서 Google 드라이브 파일 이름을 가져 오기 위해 appscript에 간단한 코드를 만들었습니다.

function FileName (URL) {
  var ss = SpreadsheetApp.openByUrl(URL);
  return ss.getName();
}

실행하면 오류가 발생합니다.

예외 : SpreadsheetApp.openByUrl을 호출 할 권한이 없습니다. 필요한 권한 :https://www.googleapis.com/auth/spreadsheets (linha 6).

고급 Google 서비스 영역에서 이미 Drive 및 Sheets API를 활성화 했으므로 "https://www.googleapis.com/auth/spreadsheets"는 괜찮을 것입니다.하지만 그렇지 않습니다.

어떻게하면 되나요?

이 링크 에 문제 복제와 함께 샘플 시트를 만들었습니다 .

답변

2 Marios Nov 18 2020 at 15:29

문제에 대한 설명 :

사용자 지정 함수를 사용하고 있습니다.

공식 문서 에 매우 잘 설명되어 있습니다 .

사용자 정의 함수에서 X 서비스를 호출 할 권한이 없습니다.라는 오류 메시지가 표시되면 서비스에 사용자 인증이 필요하므로 사용자 정의 함수에서 사용할 수 없습니다.

메시지에 명시되어 있듯이 SpreadsheetApp.openByUrl(URL)사용자 지정 기능 내에서 와 같이 인증이 필요한 서비스를 사용할 수 없습니다 .

SpreadsheetApp.openByUrl(URL);사용자 지정 함수 내에서 사용할 수없는 특히 지적 하는 표도 있습니다.

해결 방법 :

여러 가지 방법으로 일반 함수를 사용할 수 있습니다.

  1. 사용자 정의 메뉴 버튼으로 구현,
  2. 스크립트 편집기에서 실행하십시오.
  3. 간단한 트리거 를 통해 실행 합니다 .
  4. 애드온 메뉴 등을 만듭니다.

스크립트의 정규 함수 버전 :

function FileName () {
  var URL = "spreadsheet_url"
  var ss = SpreadsheetApp.openByUrl(URL);
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  sheet.getRange('A1').setValue(ss.getName());
}

실행 하십시오 (스크린 샷)이 스크립트는 셀의 값으로 설정됩니다 A1Sheet1스프레드 시트 파일의 이름을.

공식 문서에서이 스크립트에서 사용한 함수를 찾아서 각각의 기능을 확인하는 것이 좋습니다.

최신 정보:

방금 시트를 열고 사용중인 것을 확인 SpreadsheetApp.openByUrl(URL);했지만이 방법은 스프레드 시트에서만 작동하므로 클래스 이름 SpreadsheetApp입니다. 파일 ID를 열려면 getFileById (id) 를 사용해야 합니다. 첫 번째 열에는 파일 URL이 있지만 URL로 파일을 여는 방법이 없습니다. 다음과 같은 파일의 ID :

https://drive.google.com/file/d/1d-2L5kGZWbUa_p7iLgBBa59QqZiyIhgp/view?usp=sharing

is :

1d-2L5kGZWbUa_p7iLgBBa59QqZiyIhgp

따라서 당신은 사용해야합니다

var files = DriveApp.getFileById('1d-2L5kGZWbUa_p7iLgBBa59QqZiyIhgp')

코드 조각은 다음과 같습니다.

function FileName () {
  var URL = "1d-2L5kGZWbUa_p7iLgBBa59QqZiyIhgp"
  var file = DriveApp.getFileById(URL);
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  sheet.getRange('B1').setValue(file.getName());
}

이 질문은 더 집중해야 할 질문이되었으므로 GAS에 익숙해 지십시오.