[GAS] 대량의 일정을 Google 스프레드 시트에서 쉽게 Google 캘린더에 등록합시다.
이 기사를 읽고 습득할 수 있는 것
・캘린더에 추가하고 싶은 대량의 예정을 스프레드 시트로부터 일괄 등록할 수 있게 된다
이 기사를 읽은 당신!
우선이 화면의 어딘가에있는 LGTM 누르십시오!
(마지막까지 읽고, 「그래도 이봐」라고 생각하면 LGTM 지워도 좋습니다 웃음)
배경
프로필에도 쓰여 있듯이 자신은 경마를 좋아한다.
일본 경마뿐만 아니라 해외 경마도 보고 싶다.
하지만, 해외 경마는 기본적으로 밤 행해지고 있으므로, 상당히 잊어 버리고 있다.
그래서 잊지 않도록 google 캘린더에 미리 기록해 두고,
매일 확인할 수 있도록 하고 싶었다.
또, 해외 경마라고 해도, 세계 각지에서 행해지고 있어,
하나씩 꾸준히 등록해 가는 것도 좀처럼 뼈가 부러진다.
그래서 google 스프레드 시트에 모두 기재하고,
Google Apps Script를 사용해 단번에 캘린더에 등록해 가려고 생각했다.
그 달력이 여기
현재 73 레이스 등록하고 있다. 앞으로도 아직 추가 예정.
수동 입력은 할 수 없습니다 ...
어쨌든 구현
무엇이든, 우선은 구현 방법 보고 싶네요.
우선, 이번에 사용하는 스프레드 시트는 이쪽.
시간은 비어 있지만, 이번에는 사용하지 않으므로 신경쓰지 않고.
(향후 사용하기 때문에 써 놓았다)
이번에는 이 데이터를 이런 식으로 사용하기로 했다.
품목
사용값(시트 열)
제목
레이스명(A열)
날짜
날짜(B열)
위치
국가명(E열) + 경마장(D열)
설명
학년(F열)
또한 G 열이 Done 얼룩이지만, 나중에 설명합니다.
조속히 코드를 써 보자.
(코드에 착색하고 싶었기 때문에
코드.gs→코드.js
하고 있습니다)
코드.js// スプレッドシートのIDは、スプレッドシートのURLから確認できます
// https://docs.google.com/spreadsheets/d/"{スプレッドシートのID}"/edit#gid=0
// カレンダーIDは「カレンダー」→「設定」→「マイカレンダーの設定」から追加したいカレンダーを選択
// →「カレンダー ID」があるのでそれを使用する
const spreadSheet = SpreadsheetApp.openById("{スプレッドシートのID}")
const calendar = CalendarApp.getCalendarById('[email protected]')
const sheet = spreadSheet.getSheetByName('シート名')
function createEvents() {
// スプレッドシートの記載されている最終行を取得
const listLastRow = sheet.getLastRow();
for(var i = 1 ; i < listLastRow; i++) {
// タイトル
const title = sheet.getRange(i + 1, 1).getValue()
// カレンダーに追加されているかを判定するために使う
const isAdd = sheet.getRange(i + 1, 7).getValue()
// isAddが'Done'(追加済という意味)もしくはtitleが登録されていない場合、この行をパスする
if(isAdd == 'Done' || title == '') {
continue
}
// timeだけど今回は日付
const time = new Date(sheet.getRange(i + 1, 2).getValue())
// 説明
const description = sheet.getRange(i + 1, 6).getValue()
// 国名
const country = sheet.getRange(i + 1, 4).getValue()
// 競馬場
const raceCourse = sheet.getRange(i + 1, 5).getValue()
// オプション(説明と場所はここに定義する)
const option = {
description: description,
location: country + " " + raceCourse,
}
// カレンダーに追加する(全日追加する)
calendar.createAllDayEvent(title, time, option)
// 追加したことを記録しておくためにG列に'Done'を記載
sheet.getRange(i + 1, 7).setValue('Done')
}
}
calendar.createAllDayEvent(title, time, option)
에서,
제목과 시간, 옵션을 캘린더에 기록합니다.
그건 그렇고, option는 사용하지 않아도 좋다.
이번에는 전일에 등록하지만, 만약 시간 지정하고 싶다면,
시간 지정으로 하고 싶었지만,calendar.createEvent(title, startTime, endTime)
사용합시다.
(option 사용하고 싶다면,calendar.createEvent(title, startTime, endTime,option)
처럼 추가한다. )
자세한 것은 문서에 쓰고 있기 때문에 그것을 봐 주면 좋다고 생각합니다.
코드를 작성할 수 있다면
여기까지 만들면 createEvents()
를 실행한다.
처음이라면, 여러가지 제휴에 대한 확인 View가 나온다고 생각하지만, OKOK해 가면 좋다.
이것으로 실행 완료될 것.
캘린더에 추가된 것을 확인할 수 있다고 생각합니다.
다시 createEvents()
를 실행해도 캘린더에 새로 추가되지 않는다고 생각합니다.
이것은, G열의 Done이 효과가 있기 때문에.
신규로 추가하고 싶다면, 지금까지 기재하고 있는 것은 그대로 하고, 그 아래에서 추가해 가자.
끝에
GAS는 프로그래밍을 별로 한 적이 없는 사람이 먼저 만지거나 하는 인상이 있다.
(자신도 그랬다)
우선 코드를 복사하고, 여러가지 만져보고, 시행착오하면서 정답을 찾아가면 좋다고 생각합니다.
이해하기 어려우면 댓글을 달아주세요.
읽어 주셔서 감사합니다.
추가
@ Nyankobo x 씨보다,getValue
를 많이 사용하면 작동 시간이 느려지므로,getValues
로 시트의 데이터를 일괄 취득하는 것이 좋다는 지적을 받았습니다!
고마워요...!
코멘트에 기재되어 있으므로 보고 싶습니다↓
Reference
이 문제에 관하여([GAS] 대량의 일정을 Google 스프레드 시트에서 쉽게 Google 캘린더에 등록합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taichi6930/items/9df8f588bbedf65bb4b5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우선이 화면의 어딘가에있는 LGTM 누르십시오!
(마지막까지 읽고, 「그래도 이봐」라고 생각하면 LGTM 지워도 좋습니다 웃음)
배경
프로필에도 쓰여 있듯이 자신은 경마를 좋아한다.
일본 경마뿐만 아니라 해외 경마도 보고 싶다.
하지만, 해외 경마는 기본적으로 밤 행해지고 있으므로, 상당히 잊어 버리고 있다.
그래서 잊지 않도록 google 캘린더에 미리 기록해 두고,
매일 확인할 수 있도록 하고 싶었다.
또, 해외 경마라고 해도, 세계 각지에서 행해지고 있어,
하나씩 꾸준히 등록해 가는 것도 좀처럼 뼈가 부러진다.
그래서 google 스프레드 시트에 모두 기재하고,
Google Apps Script를 사용해 단번에 캘린더에 등록해 가려고 생각했다.
그 달력이 여기
현재 73 레이스 등록하고 있다. 앞으로도 아직 추가 예정.
수동 입력은 할 수 없습니다 ...
어쨌든 구현
무엇이든, 우선은 구현 방법 보고 싶네요.
우선, 이번에 사용하는 스프레드 시트는 이쪽.
시간은 비어 있지만, 이번에는 사용하지 않으므로 신경쓰지 않고.
(향후 사용하기 때문에 써 놓았다)
이번에는 이 데이터를 이런 식으로 사용하기로 했다.
품목
사용값(시트 열)
제목
레이스명(A열)
날짜
날짜(B열)
위치
국가명(E열) + 경마장(D열)
설명
학년(F열)
또한 G 열이 Done 얼룩이지만, 나중에 설명합니다.
조속히 코드를 써 보자.
(코드에 착색하고 싶었기 때문에
코드.gs→코드.js
하고 있습니다)
코드.js// スプレッドシートのIDは、スプレッドシートのURLから確認できます
// https://docs.google.com/spreadsheets/d/"{スプレッドシートのID}"/edit#gid=0
// カレンダーIDは「カレンダー」→「設定」→「マイカレンダーの設定」から追加したいカレンダーを選択
// →「カレンダー ID」があるのでそれを使用する
const spreadSheet = SpreadsheetApp.openById("{スプレッドシートのID}")
const calendar = CalendarApp.getCalendarById('[email protected]')
const sheet = spreadSheet.getSheetByName('シート名')
function createEvents() {
// スプレッドシートの記載されている最終行を取得
const listLastRow = sheet.getLastRow();
for(var i = 1 ; i < listLastRow; i++) {
// タイトル
const title = sheet.getRange(i + 1, 1).getValue()
// カレンダーに追加されているかを判定するために使う
const isAdd = sheet.getRange(i + 1, 7).getValue()
// isAddが'Done'(追加済という意味)もしくはtitleが登録されていない場合、この行をパスする
if(isAdd == 'Done' || title == '') {
continue
}
// timeだけど今回は日付
const time = new Date(sheet.getRange(i + 1, 2).getValue())
// 説明
const description = sheet.getRange(i + 1, 6).getValue()
// 国名
const country = sheet.getRange(i + 1, 4).getValue()
// 競馬場
const raceCourse = sheet.getRange(i + 1, 5).getValue()
// オプション(説明と場所はここに定義する)
const option = {
description: description,
location: country + " " + raceCourse,
}
// カレンダーに追加する(全日追加する)
calendar.createAllDayEvent(title, time, option)
// 追加したことを記録しておくためにG列に'Done'を記載
sheet.getRange(i + 1, 7).setValue('Done')
}
}
calendar.createAllDayEvent(title, time, option)
에서,
제목과 시간, 옵션을 캘린더에 기록합니다.
그건 그렇고, option는 사용하지 않아도 좋다.
이번에는 전일에 등록하지만, 만약 시간 지정하고 싶다면,
시간 지정으로 하고 싶었지만,calendar.createEvent(title, startTime, endTime)
사용합시다.
(option 사용하고 싶다면,calendar.createEvent(title, startTime, endTime,option)
처럼 추가한다. )
자세한 것은 문서에 쓰고 있기 때문에 그것을 봐 주면 좋다고 생각합니다.
코드를 작성할 수 있다면
여기까지 만들면 createEvents()
를 실행한다.
처음이라면, 여러가지 제휴에 대한 확인 View가 나온다고 생각하지만, OKOK해 가면 좋다.
이것으로 실행 완료될 것.
캘린더에 추가된 것을 확인할 수 있다고 생각합니다.
다시 createEvents()
를 실행해도 캘린더에 새로 추가되지 않는다고 생각합니다.
이것은, G열의 Done이 효과가 있기 때문에.
신규로 추가하고 싶다면, 지금까지 기재하고 있는 것은 그대로 하고, 그 아래에서 추가해 가자.
끝에
GAS는 프로그래밍을 별로 한 적이 없는 사람이 먼저 만지거나 하는 인상이 있다.
(자신도 그랬다)
우선 코드를 복사하고, 여러가지 만져보고, 시행착오하면서 정답을 찾아가면 좋다고 생각합니다.
이해하기 어려우면 댓글을 달아주세요.
읽어 주셔서 감사합니다.
추가
@ Nyankobo x 씨보다,getValue
를 많이 사용하면 작동 시간이 느려지므로,getValues
로 시트의 데이터를 일괄 취득하는 것이 좋다는 지적을 받았습니다!
고마워요...!
코멘트에 기재되어 있으므로 보고 싶습니다↓
Reference
이 문제에 관하여([GAS] 대량의 일정을 Google 스프레드 시트에서 쉽게 Google 캘린더에 등록합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taichi6930/items/9df8f588bbedf65bb4b5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
현재 73 레이스 등록하고 있다. 앞으로도 아직 추가 예정.
수동 입력은 할 수 없습니다 ...
어쨌든 구현
무엇이든, 우선은 구현 방법 보고 싶네요.
우선, 이번에 사용하는 스프레드 시트는 이쪽.
시간은 비어 있지만, 이번에는 사용하지 않으므로 신경쓰지 않고.
(향후 사용하기 때문에 써 놓았다)
이번에는 이 데이터를 이런 식으로 사용하기로 했다.
품목
사용값(시트 열)
제목
레이스명(A열)
날짜
날짜(B열)
위치
국가명(E열) + 경마장(D열)
설명
학년(F열)
또한 G 열이 Done 얼룩이지만, 나중에 설명합니다.
조속히 코드를 써 보자.
(코드에 착색하고 싶었기 때문에
코드.gs→코드.js
하고 있습니다)
코드.js// スプレッドシートのIDは、スプレッドシートのURLから確認できます
// https://docs.google.com/spreadsheets/d/"{スプレッドシートのID}"/edit#gid=0
// カレンダーIDは「カレンダー」→「設定」→「マイカレンダーの設定」から追加したいカレンダーを選択
// →「カレンダー ID」があるのでそれを使用する
const spreadSheet = SpreadsheetApp.openById("{スプレッドシートのID}")
const calendar = CalendarApp.getCalendarById('[email protected]')
const sheet = spreadSheet.getSheetByName('シート名')
function createEvents() {
// スプレッドシートの記載されている最終行を取得
const listLastRow = sheet.getLastRow();
for(var i = 1 ; i < listLastRow; i++) {
// タイトル
const title = sheet.getRange(i + 1, 1).getValue()
// カレンダーに追加されているかを判定するために使う
const isAdd = sheet.getRange(i + 1, 7).getValue()
// isAddが'Done'(追加済という意味)もしくはtitleが登録されていない場合、この行をパスする
if(isAdd == 'Done' || title == '') {
continue
}
// timeだけど今回は日付
const time = new Date(sheet.getRange(i + 1, 2).getValue())
// 説明
const description = sheet.getRange(i + 1, 6).getValue()
// 国名
const country = sheet.getRange(i + 1, 4).getValue()
// 競馬場
const raceCourse = sheet.getRange(i + 1, 5).getValue()
// オプション(説明と場所はここに定義する)
const option = {
description: description,
location: country + " " + raceCourse,
}
// カレンダーに追加する(全日追加する)
calendar.createAllDayEvent(title, time, option)
// 追加したことを記録しておくためにG列に'Done'を記載
sheet.getRange(i + 1, 7).setValue('Done')
}
}
calendar.createAllDayEvent(title, time, option)
에서,
제목과 시간, 옵션을 캘린더에 기록합니다.
그건 그렇고, option는 사용하지 않아도 좋다.
이번에는 전일에 등록하지만, 만약 시간 지정하고 싶다면,
시간 지정으로 하고 싶었지만,calendar.createEvent(title, startTime, endTime)
사용합시다.
(option 사용하고 싶다면,calendar.createEvent(title, startTime, endTime,option)
처럼 추가한다. )
자세한 것은 문서에 쓰고 있기 때문에 그것을 봐 주면 좋다고 생각합니다.
코드를 작성할 수 있다면
여기까지 만들면 createEvents()
를 실행한다.
처음이라면, 여러가지 제휴에 대한 확인 View가 나온다고 생각하지만, OKOK해 가면 좋다.
이것으로 실행 완료될 것.
캘린더에 추가된 것을 확인할 수 있다고 생각합니다.
다시 createEvents()
를 실행해도 캘린더에 새로 추가되지 않는다고 생각합니다.
이것은, G열의 Done이 효과가 있기 때문에.
신규로 추가하고 싶다면, 지금까지 기재하고 있는 것은 그대로 하고, 그 아래에서 추가해 가자.
끝에
GAS는 프로그래밍을 별로 한 적이 없는 사람이 먼저 만지거나 하는 인상이 있다.
(자신도 그랬다)
우선 코드를 복사하고, 여러가지 만져보고, 시행착오하면서 정답을 찾아가면 좋다고 생각합니다.
이해하기 어려우면 댓글을 달아주세요.
읽어 주셔서 감사합니다.
추가
@ Nyankobo x 씨보다,getValue
를 많이 사용하면 작동 시간이 느려지므로,getValues
로 시트의 데이터를 일괄 취득하는 것이 좋다는 지적을 받았습니다!
고마워요...!
코멘트에 기재되어 있으므로 보고 싶습니다↓
Reference
이 문제에 관하여([GAS] 대량의 일정을 Google 스프레드 시트에서 쉽게 Google 캘린더에 등록합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taichi6930/items/9df8f588bbedf65bb4b5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// スプレッドシートのIDは、スプレッドシートのURLから確認できます
// https://docs.google.com/spreadsheets/d/"{スプレッドシートのID}"/edit#gid=0
// カレンダーIDは「カレンダー」→「設定」→「マイカレンダーの設定」から追加したいカレンダーを選択
// →「カレンダー ID」があるのでそれを使用する
const spreadSheet = SpreadsheetApp.openById("{スプレッドシートのID}")
const calendar = CalendarApp.getCalendarById('[email protected]')
const sheet = spreadSheet.getSheetByName('シート名')
function createEvents() {
// スプレッドシートの記載されている最終行を取得
const listLastRow = sheet.getLastRow();
for(var i = 1 ; i < listLastRow; i++) {
// タイトル
const title = sheet.getRange(i + 1, 1).getValue()
// カレンダーに追加されているかを判定するために使う
const isAdd = sheet.getRange(i + 1, 7).getValue()
// isAddが'Done'(追加済という意味)もしくはtitleが登録されていない場合、この行をパスする
if(isAdd == 'Done' || title == '') {
continue
}
// timeだけど今回は日付
const time = new Date(sheet.getRange(i + 1, 2).getValue())
// 説明
const description = sheet.getRange(i + 1, 6).getValue()
// 国名
const country = sheet.getRange(i + 1, 4).getValue()
// 競馬場
const raceCourse = sheet.getRange(i + 1, 5).getValue()
// オプション(説明と場所はここに定義する)
const option = {
description: description,
location: country + " " + raceCourse,
}
// カレンダーに追加する(全日追加する)
calendar.createAllDayEvent(title, time, option)
// 追加したことを記録しておくためにG列に'Done'を記載
sheet.getRange(i + 1, 7).setValue('Done')
}
}
여기까지 만들면
createEvents()
를 실행한다.처음이라면, 여러가지 제휴에 대한 확인 View가 나온다고 생각하지만, OKOK해 가면 좋다.
이것으로 실행 완료될 것.
캘린더에 추가된 것을 확인할 수 있다고 생각합니다.
다시
createEvents()
를 실행해도 캘린더에 새로 추가되지 않는다고 생각합니다.이것은, G열의 Done이 효과가 있기 때문에.
신규로 추가하고 싶다면, 지금까지 기재하고 있는 것은 그대로 하고, 그 아래에서 추가해 가자.
끝에
GAS는 프로그래밍을 별로 한 적이 없는 사람이 먼저 만지거나 하는 인상이 있다.
(자신도 그랬다)
우선 코드를 복사하고, 여러가지 만져보고, 시행착오하면서 정답을 찾아가면 좋다고 생각합니다.
이해하기 어려우면 댓글을 달아주세요.
읽어 주셔서 감사합니다.
추가
@ Nyankobo x 씨보다,getValue
를 많이 사용하면 작동 시간이 느려지므로,getValues
로 시트의 데이터를 일괄 취득하는 것이 좋다는 지적을 받았습니다!
고마워요...!
코멘트에 기재되어 있으므로 보고 싶습니다↓
Reference
이 문제에 관하여([GAS] 대량의 일정을 Google 스프레드 시트에서 쉽게 Google 캘린더에 등록합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taichi6930/items/9df8f588bbedf65bb4b5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
@ Nyankobo x 씨보다,
getValue
를 많이 사용하면 작동 시간이 느려지므로,getValues
로 시트의 데이터를 일괄 취득하는 것이 좋다는 지적을 받았습니다!고마워요...!
코멘트에 기재되어 있으므로 보고 싶습니다↓
Reference
이 문제에 관하여([GAS] 대량의 일정을 Google 스프레드 시트에서 쉽게 Google 캘린더에 등록합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taichi6930/items/9df8f588bbedf65bb4b5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)