サイトアイコン Googleスプレッドシート 完全攻略

Googleカレンダー登録時にスプレッドシートから添付ファイル付きで登録する

スプレッドシートから予定を入力する方法「全体像」

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

スプレッドシートからGoogleカレンダーに予定を流し込む(インポート、連携する)方法
スプレッドシートに記載した予定をGoogleカレンダーに連動させることができます。 「GASって何?」状態であってもコピペで簡単にできます。

 

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

なので、サクッとマスターして

と答えてあげてください。

いただいた質問

 

動画はこちら

 

シートはこちら

*クリックすることでシートが開きます。(コピーしてお使いください)

スクリプト

/**
 * 指定のGoogleカレンダーに予定を添付ファイル付きで追加する
 * 制限事項:終日の予定には未対応、添付ファイルがない予定には未対応
 */
function CreateSchedule_attachment() {


  // googleカレンダーの取得
  const calendarId = 'カレンダーID';   //★カレンダーID


  // 読み取り範囲(表の始まり行と終わり列)
  const topRow = 2
  const lastCol = 9
  const statusCellCol = 1


  // 予定の一覧バッファ内の列(0始まり)
  const statusNum = 0
  const dayNum = 1
  const startNum = 2
  const endNum = 3
  const titleNum = 4
  const locationNum = 5
  const descriptionNum = 6
  const urlNum = 7
  const attachtitleNum = 8


  // シートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()


  // 予定の最終行を取得
  let lastRow = sheet.getLastRow()


  //予定の一覧をバッファに取得
  const contents = sheet.getRange(topRow, 1, lastRow, lastCol).getValues()


  //順に予定を作成
  for (let i = 0; i <= lastRow - topRow; i++) {


    //「済」の場合は無視する
    if (contents[i][statusNum] === "済") {
      continue
    }


    // 値をセット 日時はフォーマットして保持
    let day = contents[i][dayNum]
    let startTime = contents[i][startNum]
    let endTime = contents[i][endNum]


    if (day === "")   //日付データがなければ抜ける
      break


    // 開始日時を作成
    let startDate = new Date(day)
    startDate.setHours(startTime.getHours())
    startDate.setMinutes(startTime.getMinutes())


    // 終了日時を作成
    let endDate = new Date(day)
    endDate.setHours(endTime.getHours())
    endDate.setMinutes(endTime.getMinutes())


    //パラメータの生成
    let eventParam = {
      summary: contents[i][titleNum],           // カレンダーの予定名
      description: contents[i][descriptionNum], // 概要  
      location: contents[i][locationNum],       // 場所
      start: {
        'dateTime': startDate.toISOString(),
        'timeZone': 'Asia/Tokyo'
      },
      end: {
        'dateTime': endDate.toISOString(),
        'timeZone': 'Asia/Tokyo'
      },
      attachments: [{
        fileUrl: contents[i][urlNum],             //添付ファイルのURL
        title: contents[i][attachtitleNum],       //添付ファイルのタイトル
      }]
    }


    console.log(eventParam)
    Calendar.Events.insert(eventParam, calendarId, { supportsAttachments: true });


    //予定が作成されたら「済」にする
    sheet.getRange(topRow + i, statusCellCol).setValue("済")
  };


  // エラーの場合ログ出力する
  // } catch (e) {
  //   Logger.log(e)
  // }



  // 完了通知
  // Browser.msgBox("予定を追加しました。")
}

ポイント

添付ファイルを付加したい場合は、CalenderAppではなくて
Calenderサービスなるものを使用する必要があります。

 

カレンダーIDの取得方法はこちら↓

 

 

Google Calendar API の登録

Step1.

①「サービス」の右の「+」をクリックします。
②「Google Calendar API」をクリックします。(IDに「Calender」と表示されます)
③「追加」をクリックします。

「Google Calendar API」が追加されるとサービスの下に「Calendar」と表示されます。

制限事項

終日の予定には未対応

添付ファイルがない場合も添付ファイルのアイコンが付加

 

注意事項

添付ファイルは、共有権限がないと閲覧不可

 

最後までご覧いただきありがとうございます。

つぎはこちら

【GAS】Googleカレンダーに日付またぎ(時間指定)で登録する方法
スプレッドシートに記載した予定をGoogleカレンダーに反映させることができます。 日付をまたいだ予定でも反映されます。

スプレッドシートから予定を入力する方法「全体像」

 

 

 

 

以下のサイトを参考にさせていただきました。

モバイルバージョンを終了