【GAS】GoogleAppsScript로 GoogleSlides 슬라이드 편집
자신도 최근 사내의 효율화로 사용하는 케이스가 많아 잘 쓰고 있습니다.
평소에는 스프레드시트에 묶인 Script를 쓰는 것이 많고 그곳은 인터넷에 많은 정보가 있습니다만, 이번에 쓴 Google Slides에 관한 코드의 정보는 적었기 때문에 적어 둡니다.
또한 이 예제에서는 Google Slides API를 사용하지 않습니다.
이번 스크립트 개요
지정한 폴더에 복사 원본이 되는 템플릿을 보관 유지하고 있으며, 그것을 복사하여 날짜 등의 동적으로 다시 쓰는 정보만 바꾸는 Script입니다.
매주 실시하는 회의의 사전 자료를 자동으로 생성하는 것과 같은 용도를 상정하고 있습니다.
다음의 코드는 금요일에 회의가 있다고 가정해, 매주 목요일 아침등에 트리거 설정해 움직입니다.
날짜를 삽입하고 싶은 부분에 {DATE}
라고 써 둔 템플릿 파일.
소개
이 기사의 정보는 2018년 8월 현재입니다.
Gsuite 환경에서 만들고 있습니다.
방법
준비
사전 문서의 템플릿과 문서 생성을 위한 폴더를 만들어 두 ID를 모두 둡니다.
슬라이드 ID는 슬라이드가 열린 상태의 URL에 https://docs.google.com/presentation/d/<スライドのID>/edit#...
로 표시되고 폴더 ID는 GoogleDrive에서 원하는 폴더를 열 때 URL에 https://drive.google.com/drive/u/0/folders/<フォルダのID>
로 표시됩니다.
코드
의사록 파일이나 폴더의 ID는 function으로 정의해 어디서나 사용할 수 있는 정수 같은 느낌으로 버립니다.createMeetingPresenation()
를 실행하면 회의록 파일이 생성됩니다. 또한 이 기능은 다음 세 가지 기능에 의존합니다.editSlideData()
에서는 슬라이드의 내용을 만지고 있습니다.getStringFormatDate()
는 Date 형의 값을 건네주면(자) 2018/08/01
같은 지정의 문자로 단락지은 String 형의 일자를 돌려주는 것입니다.postSlack()
는 Slack에 게시하는 사람입니다. 이번 내용과는 관계 없기 때문에 컷.
code.gs// 議事録templateファイルのID
function getSourceFileId() {
return "<スライドのID>";
}
// 議事録を保存するためのフォルダ
function getDestinationFolderId() {
return "<フォルダのID>";
}
function createMeetingPresentation() {
//ファイル名
var fileName = "週例会議";
var date = new Date();
const friday = 5; // javascriptで金曜日は5
var remainDays = friday - date.getDay();
date.setDate(date.getDate() + remainDays);
var formatDate = getStringFormatDate(date,"");
fileName = formatDate + "_" + fileName;
Logger.log(fileName);
// templateからコピーしてくる
var sourceFileId = getSourceFileId();
// 出力先フォルダ
var destinationFolderId = getDestinationFolderId();
var destination = DriveApp.getFolderById(destinationFolderId);
// ファイル持って来てコピー
var sourceFile = DriveApp.getFileById(sourceFileId);
var file = sourceFile.makeCopy(fileName, destination);
editSlideData(file.getId(), date);
var message = "週会議の事前資料です!会議までに記入お願いします!";
postSlack(file.getUrl(), message); //できたファイルのURLをSlackに通知したり、、、
}
// 文書内の日付などのパラメータ変更
// Slide内で会議の日時を表示したい箇所に{DATE}と記入し、
// 会議がある1週間の日付を表示したい居場所には{THIS_WEEK}とテンプレートに記入しておく。
function editSlideData(slideId,meetingDate){
const ID_DATE = "{DATE}"
const ID_THIS_WEEK = "{THIS_WEEK}";
var dateString = getStringFormatDate(meetingDate,"/");
var thisWeekStartDate = meetingDate;
thisWeekStartDate.setDate(thisWeekStartDate.getDate() - 6); // 前週の1つあとの曜日へ(土)
var thisWeekStartDateString = getStringFormatDate(thisWeekStartDate, "/");
// "2018/08/04〜2018/08/10"のようになる
var daysOfThisWeek = thisWeekStartDateString + "〜" + dateString;
// 全ページ取得
var slides = SlidesApp.openById(slideId).getSlides();
// 全てのスライドのシェイプをチェックしていく
for(var j=0;j<slides.length;j++){
var slide = slides[j];
var pageElements = slide.getPageElements();
for(var i=0;i<pageElements.length;i++){
var text = pageElements[i].asShape().getText().asString();
// 指定のフォーマットの文字列を置換
pageElements[i].asShape().getText().replaceAllText(ID_THIS_WEEK, daysOfThisWeek);
pageElements[i].asShape().getText().replaceAllText(ID_DATE, dateString);
}
}
}
//入って来たDate型の日時をseparatorで区切った文字列にして返す
function getStringFormatDate(date, separator){
var year = date.getFullYear();
var month = date.getMonth() + 1;
if(month < 10){
month = "0" + String(month);
}
var date = date.getDate();
if(date < 10){
date = "0" + String(date);
}
var formatDate = String(year) + separator + String(month) + separator + String(date);
return formatDate
}
//Slackに投稿する
function postSlack(url, message){
// 省略
}
끝에
Google Apps Script는 자바스크립트도 있어 비교적 쓰는 것이 피곤하다. 유형. . .
하지만 여러가지 할 수 있어 비교적 도움이 되기 때문에 사이좋게 해 가고 싶네요.
참고
· Class SlidesApp | Apps Script | Google Developers
· Google Slides를 Google Apps Script에서 만지기
Reference
이 문제에 관하여(【GAS】GoogleAppsScript로 GoogleSlides 슬라이드 편집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kado34/items/aa8a5edb9898e2002199
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 기사의 정보는 2018년 8월 현재입니다.
Gsuite 환경에서 만들고 있습니다.
방법
준비
사전 문서의 템플릿과 문서 생성을 위한 폴더를 만들어 두 ID를 모두 둡니다.
슬라이드 ID는 슬라이드가 열린 상태의 URL에 https://docs.google.com/presentation/d/<スライドのID>/edit#...
로 표시되고 폴더 ID는 GoogleDrive에서 원하는 폴더를 열 때 URL에 https://drive.google.com/drive/u/0/folders/<フォルダのID>
로 표시됩니다.
코드
의사록 파일이나 폴더의 ID는 function으로 정의해 어디서나 사용할 수 있는 정수 같은 느낌으로 버립니다.createMeetingPresenation()
를 실행하면 회의록 파일이 생성됩니다. 또한 이 기능은 다음 세 가지 기능에 의존합니다.editSlideData()
에서는 슬라이드의 내용을 만지고 있습니다.getStringFormatDate()
는 Date 형의 값을 건네주면(자) 2018/08/01
같은 지정의 문자로 단락지은 String 형의 일자를 돌려주는 것입니다.postSlack()
는 Slack에 게시하는 사람입니다. 이번 내용과는 관계 없기 때문에 컷.
code.gs// 議事録templateファイルのID
function getSourceFileId() {
return "<スライドのID>";
}
// 議事録を保存するためのフォルダ
function getDestinationFolderId() {
return "<フォルダのID>";
}
function createMeetingPresentation() {
//ファイル名
var fileName = "週例会議";
var date = new Date();
const friday = 5; // javascriptで金曜日は5
var remainDays = friday - date.getDay();
date.setDate(date.getDate() + remainDays);
var formatDate = getStringFormatDate(date,"");
fileName = formatDate + "_" + fileName;
Logger.log(fileName);
// templateからコピーしてくる
var sourceFileId = getSourceFileId();
// 出力先フォルダ
var destinationFolderId = getDestinationFolderId();
var destination = DriveApp.getFolderById(destinationFolderId);
// ファイル持って来てコピー
var sourceFile = DriveApp.getFileById(sourceFileId);
var file = sourceFile.makeCopy(fileName, destination);
editSlideData(file.getId(), date);
var message = "週会議の事前資料です!会議までに記入お願いします!";
postSlack(file.getUrl(), message); //できたファイルのURLをSlackに通知したり、、、
}
// 文書内の日付などのパラメータ変更
// Slide内で会議の日時を表示したい箇所に{DATE}と記入し、
// 会議がある1週間の日付を表示したい居場所には{THIS_WEEK}とテンプレートに記入しておく。
function editSlideData(slideId,meetingDate){
const ID_DATE = "{DATE}"
const ID_THIS_WEEK = "{THIS_WEEK}";
var dateString = getStringFormatDate(meetingDate,"/");
var thisWeekStartDate = meetingDate;
thisWeekStartDate.setDate(thisWeekStartDate.getDate() - 6); // 前週の1つあとの曜日へ(土)
var thisWeekStartDateString = getStringFormatDate(thisWeekStartDate, "/");
// "2018/08/04〜2018/08/10"のようになる
var daysOfThisWeek = thisWeekStartDateString + "〜" + dateString;
// 全ページ取得
var slides = SlidesApp.openById(slideId).getSlides();
// 全てのスライドのシェイプをチェックしていく
for(var j=0;j<slides.length;j++){
var slide = slides[j];
var pageElements = slide.getPageElements();
for(var i=0;i<pageElements.length;i++){
var text = pageElements[i].asShape().getText().asString();
// 指定のフォーマットの文字列を置換
pageElements[i].asShape().getText().replaceAllText(ID_THIS_WEEK, daysOfThisWeek);
pageElements[i].asShape().getText().replaceAllText(ID_DATE, dateString);
}
}
}
//入って来たDate型の日時をseparatorで区切った文字列にして返す
function getStringFormatDate(date, separator){
var year = date.getFullYear();
var month = date.getMonth() + 1;
if(month < 10){
month = "0" + String(month);
}
var date = date.getDate();
if(date < 10){
date = "0" + String(date);
}
var formatDate = String(year) + separator + String(month) + separator + String(date);
return formatDate
}
//Slackに投稿する
function postSlack(url, message){
// 省略
}
끝에
Google Apps Script는 자바스크립트도 있어 비교적 쓰는 것이 피곤하다. 유형. . .
하지만 여러가지 할 수 있어 비교적 도움이 되기 때문에 사이좋게 해 가고 싶네요.
참고
· Class SlidesApp | Apps Script | Google Developers
· Google Slides를 Google Apps Script에서 만지기
Reference
이 문제에 관하여(【GAS】GoogleAppsScript로 GoogleSlides 슬라이드 편집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kado34/items/aa8a5edb9898e2002199
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// 議事録templateファイルのID
function getSourceFileId() {
return "<スライドのID>";
}
// 議事録を保存するためのフォルダ
function getDestinationFolderId() {
return "<フォルダのID>";
}
function createMeetingPresentation() {
//ファイル名
var fileName = "週例会議";
var date = new Date();
const friday = 5; // javascriptで金曜日は5
var remainDays = friday - date.getDay();
date.setDate(date.getDate() + remainDays);
var formatDate = getStringFormatDate(date,"");
fileName = formatDate + "_" + fileName;
Logger.log(fileName);
// templateからコピーしてくる
var sourceFileId = getSourceFileId();
// 出力先フォルダ
var destinationFolderId = getDestinationFolderId();
var destination = DriveApp.getFolderById(destinationFolderId);
// ファイル持って来てコピー
var sourceFile = DriveApp.getFileById(sourceFileId);
var file = sourceFile.makeCopy(fileName, destination);
editSlideData(file.getId(), date);
var message = "週会議の事前資料です!会議までに記入お願いします!";
postSlack(file.getUrl(), message); //できたファイルのURLをSlackに通知したり、、、
}
// 文書内の日付などのパラメータ変更
// Slide内で会議の日時を表示したい箇所に{DATE}と記入し、
// 会議がある1週間の日付を表示したい居場所には{THIS_WEEK}とテンプレートに記入しておく。
function editSlideData(slideId,meetingDate){
const ID_DATE = "{DATE}"
const ID_THIS_WEEK = "{THIS_WEEK}";
var dateString = getStringFormatDate(meetingDate,"/");
var thisWeekStartDate = meetingDate;
thisWeekStartDate.setDate(thisWeekStartDate.getDate() - 6); // 前週の1つあとの曜日へ(土)
var thisWeekStartDateString = getStringFormatDate(thisWeekStartDate, "/");
// "2018/08/04〜2018/08/10"のようになる
var daysOfThisWeek = thisWeekStartDateString + "〜" + dateString;
// 全ページ取得
var slides = SlidesApp.openById(slideId).getSlides();
// 全てのスライドのシェイプをチェックしていく
for(var j=0;j<slides.length;j++){
var slide = slides[j];
var pageElements = slide.getPageElements();
for(var i=0;i<pageElements.length;i++){
var text = pageElements[i].asShape().getText().asString();
// 指定のフォーマットの文字列を置換
pageElements[i].asShape().getText().replaceAllText(ID_THIS_WEEK, daysOfThisWeek);
pageElements[i].asShape().getText().replaceAllText(ID_DATE, dateString);
}
}
}
//入って来たDate型の日時をseparatorで区切った文字列にして返す
function getStringFormatDate(date, separator){
var year = date.getFullYear();
var month = date.getMonth() + 1;
if(month < 10){
month = "0" + String(month);
}
var date = date.getDate();
if(date < 10){
date = "0" + String(date);
}
var formatDate = String(year) + separator + String(month) + separator + String(date);
return formatDate
}
//Slackに投稿する
function postSlack(url, message){
// 省略
}
Google Apps Script는 자바스크립트도 있어 비교적 쓰는 것이 피곤하다. 유형. . .
하지만 여러가지 할 수 있어 비교적 도움이 되기 때문에 사이좋게 해 가고 싶네요.
참고
· Class SlidesApp | Apps Script | Google Developers
· Google Slides를 Google Apps Script에서 만지기
Reference
이 문제에 관하여(【GAS】GoogleAppsScript로 GoogleSlides 슬라이드 편집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kado34/items/aa8a5edb9898e2002199
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【GAS】GoogleAppsScript로 GoogleSlides 슬라이드 편집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kado34/items/aa8a5edb9898e2002199텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)