가젯 대신 선전 및 html 버튼을 사용하여이를 수행 할 수 있습니다. 이를 위해서는 oinstall 권한을 얻기 위해 Google 개발자 콘솔을 사용해야합니다.
그런 다음 클라우드 프린트 서비스를 인증해야합니다.
다음 일련의 기능은 특별히 Google Apps Script에서 사용하기에 적합하지만 적용 할 수 있습니다. 가장 먼저 할 일은 클라우드 프린트 서비스를 인증하기 위해 이동할 수있는 URL 링크를 기록하는 것입니다.
function showURL() {
var cpService = getCloudPrintService();
if (!cpService.hasAccess()) {
Logger.log(cpService.getAuthorizationUrl());
}
}
이 기능 집합의 다음 구성 요소에서 클라이언트 ID와 암호를 바꾸십시오.
function getCloudPrintService() {
return OAuth2.createService('print')
.setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setClientId('**YOUR CLIENT ID FROM GOOGLE DEVELOPER CONSOLE**')
.setClientSecret('**YOUR CLIENT SECRET**')
.setCallbackFunction('authCallback')
.setPropertyStore(PropertiesService.getUserProperties())
.setScope('https://www.googleapis.com/auth/cloudprint')
.setParam('login_hint', Session.getActiveUser().getEmail())
.setParam('access_type', 'offline')
.setParam('approval_prompt', 'force');
}
function authCallback(request) {
var isAuthorized = getCloudPrintService().handleCallback(request);
if (isAuthorized) {
return HtmlService.createHtmlOutput('You can now use Google Cloud Print from Apps Script.');
} else {
return HtmlService.createHtmlOutput('Cloud Print Error: Access Denied');
}
}
다음으로 사용할 클라우드 프린트 프린터의 ID를 가져옵니다. 이것은 Chrome의 설정 메뉴에서 확인할 수 있습니다. 설정 -> 고급 설정 표시 -> 클라우드에서 인쇄 "관리"-> "관리"-> 고급 세부 정보를 사용하려는 프린터 선택
클라우드 프린트를 시작하려면 세부 사항을 추가해야합니다 티켓에 :
var ticket = {
version: "1.0",
print: {
color: {
type: "STANDARD_COLOR",
vendor_id: "Color"
},
duplex: {
type: "LONG_EDGE"
},
copies: {copies: 1},
media_size: {
width_microns: 215900,
height_microns:279400
},
page_orientation: {
type: "PORTRAIT"
},
margins: {
top_microns:0,
bottom_microns:0,
left_microns:0,
right_microns:0
},
page_range: {
interval:
[{start:1,
end:????}]
}
}
};
티켓에 추가 할 수있는 옵션이 많이 있습니다. documentation
마지막으로 클라우드 프린트 서비스를 시작해야합니다. 다음은 원하는 특정 프린터를 정의하는 부분입니다.
var payload = {
"printerid" : '**COPY YOUR PRINTER ID HERE**',
"title" : "Prep Print",
"content" : PUT YOUR CONTENT HERE...(e.g. If you do all of this using Google Apps Script...HtmlService.createHtmlOutput(VARIABLE).getAs('application/pdf')),
"contentType": 'text/html',
"ticket" : JSON.stringify(ticket)
};
var response = UrlFetchApp.fetch('https://www.google.com/cloudprint/submit', {
method: "POST",
payload: payload,
headers: {
Authorization: 'Bearer ' + getCloudPrintService().getAccessToken()
},
"muteHttpExceptions": true
});
response = JSON.parse(response);
if (response.success) {
Logger.log("%s", response.message);
} else {
Logger.log("Error Code: %s %s", response.errorCode, response.message);}
var outcome = response.message;
}
나는 그것이 불가능하다고 생각합니다. 나는 똑같은 것을 깨닫려고했으나하지 않았다. – Stopfan