어제부터 내 Google 스크립트 중 하나가 더 이상 작동하지 않습니다. 스크립트
하지만이 오류가 발생했습니다.
"제공된 이미지는 지원되지 않는 형식입니다."
-> 이미지에 대한 모든 액세스 권한을 부여합니다. 아무것도 변경하지 않습니다.
-> 드라이브 외부의 URL을 가져 오면 스크립트가 작동합니다.
어떤 아이디어
function test_image(){
var imageUrls = DriveApp.getFilesByName("DSC_3632.png");
var file = "undefined";
while ( imageUrls.hasNext()) {
var file = imageUrls.next();
}
var imageUrl = file.getDownloadUrl() + "&access_token=" + ScriptApp.getOAuthToken();
var model_file = DriveApp.getFileById("your-id");
var presentation = model_file.makeCopy("totot");
var presentation =Slides.Presentations.get(presentation.getId())
var requests = [{
"replaceAllShapesWithImage":
{
"imageUrl": imageUrl,
"imageReplaceMethod": "CENTER_INSIDE",
"containsText": {
"text": "toto",
"matchCase": false,
}
}
}];
var presentationId = presentation.presentationId
var createSlideResponse = Slides.Presentations.batchUpdate({
requests: requests
}, presentationId);
}
이 답변은 어떻습니까? 이것은 몇 가지 가능한 답변 중 하나에 불과하다고 생각하십시오.
문제의 원인은 다음과 같은 공식 문서의 수정 때문이라고 생각합니다 .
먼저 Google Drive API에 대한 승인을 변경하고 있습니다. 쿼리 매개 변수의 액세스 토큰을 사용하여 Drive API에 대한 다운로드 요청을 승인하는 경우 대신 HTTP 헤더를 사용하여 인증하도록 요청을 마이그레이션해야합니다. 2020 년 1 월 1 일부터 쿼리 매개 변수의 액세스 토큰을 사용하여 인증하는 files.get, corrections.get 및 files.export 엔드 포인트에 대한 다운로드 호출이 더 이상 지원되지 않으므로 인증 방법을 업데이트해야합니다.
위 상황에 따라의 URL을 var imageUrl = file.getDownloadUrl() + "&access_token=" + ScriptApp.getOAuthToken();
사용할 수 없습니다. 예를 들어 URL에 액세스하면 액세스 토큰을 사용하더라도 로그인 화면이 표시됩니다.
이 문제를 피하기 위해 다음 수정은 어떻습니까?
https://drive.google.com/uc?export=download&id=###
.스크립트를 수정하면 다음과 같이됩니다.
function test_image(){
var imageUrls = DriveApp.getFilesByName("DSC_3632.png");
var file; // Modified
while (imageUrls.hasNext()) {
file = imageUrls.next();
}
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW); // Added
var imageUrl = "https://drive.google.com/uc?export=download&id=" + file.getId(); // Modified
var model_file = DriveApp.getFileById("your-id");
var presentation = model_file.makeCopy("totot");
var presentation =Slides.Presentations.get(presentation.getId())
var requests = [{
"replaceAllShapesWithImage": {
"imageUrl": imageUrl,
"imageReplaceMethod": "CENTER_INSIDE",
"containsText": {
"text": "toto",
"matchCase": false,
}
}
}];
var presentationId = presentation.presentationId
var createSlideResponse = Slides.Presentations.batchUpdate({requests: requests}, presentationId);
file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE); // Added
}
내가 당신의 질문을 오해하고 이것이 당신이 원하는 방향이 아니라면 사과드립니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다