質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

解決済

GASのエラーについての質問です。

sunao
sunao

総合スコア5

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

1回答

-2評価

0クリップ

5904閲覧

投稿2020/02/25 06:26

前提・実現したいこと

GASをこれから覚えて使用したいと思っている初心者(昨日初めて触ったので無知識です。申し訳ありません。)です。
googleカレンダーの内容をスプレッドシートに出してデータポータルにつなぎスケジュールの可視化をしようと考えているのですが
googleカレンダーを取得してスプレッドシートに出力するスクリプトをインターネットサイトで公開されていたものを利用したのですがエラーが出てしまいました。

63行目ということで
for each(var evt in myEvents){
の部分と思うのですがどのように修正すればよいのか全く分かりません。

どなたかご教示いただけませんでしょうか。
よろしくお願いいたします。

発生している問題・

googleカレンダーを取得してスプレッドシートに出力するスクリプトをインターネットサイトで公開されているものを使って作ったのですがエラーが出てしまい出力ができませんでした。

エラーメッセージ SyntaxError: Unexpected identifier(行 63、ファイル「コード.gs」) ### 該当のソースコード /* 指定月のカレンダーからイベントを取得する */ function getCalendar() { // フォルダ、ファイル関係の定義 var targetFolderIds = ["スプレッドのフォルダID"]; var targetFolder; var folderName; var objFiles; var objFile; var fileName; // スプレッドシート関係の定義 var ss; var key; var sheets; var sheetId; for (var i = 0; i < targetFolderIds.length; i++) { // Idから対象フォルダの取得 targetFolder = DriveApp.getFolderById(targetFolderIds[i]); folderName = targetFolder.getName(); // 対象フォルダ以下のSpreadsheetを取得 objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS); while (objFiles.hasNext()) { objFile = objFiles.next(); fileName = objFile.getName(); // Spreadsheetのオープン ss = SpreadsheetApp.openByUrl(objFile.getUrl()); key = ss.getId(); sheets = ss.getSheets(); } } /*スプレッドシートをクリア*/ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet(); var range = sheet.getRange(1,1,400,5); range.clear(); /*列名を入力*/ var range = sheet.getRange("A1").setValue("No."); var range = sheet.getRange("B1").setValue("カテゴリ"); var range = sheet.getRange("C1").setValue("内容"); var range = sheet.getRange("D1").setValue("開始時刻"); var range = sheet.getRange("E1").setValue("終了時刻"); var range = sheet.getRange("F1").setValue("所要時間"); var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得 var no=1; //No var myCal=CalendarApp.getCalendarById('自分のGmail'); //特定のIDのカレンダーを取得 var startDate=new Date('2018/08/20 00:00:00'); //取得開始日 var endDate=new Date('2018/10/01 00:00:00');  //取得終了日 var myEvents=myCal.getEvents(startDate,endDate); //カレンダーのイベントを取得 /* イベントの数だけ繰り返してシートに記録 */ for each(var evt in myEvents){ mySheet.appendRow( [ no, //No evt.getTitle(), //イベントタイトル evt, evt.getStartTime(), //イベントの開始時刻 evt.getEndTime(), //イベントの終了時刻 "=INDIRECT(\"RC[-1]\",FALSE)-INDIRECT(\"RC[-2]\",FALSE)" //所要時間を計算 ] ); no++; } /* 列分解 */     var lastRow = sheet.getLastRow(); for(i=2;i <= lastRow;i++){ var x = sheet.getRange(i,2); var y = sheet.getRange(i,11); // 使っていないセルを取得 var z = sheet.getRange(2,3,lastRow-1,1); z.clearContent(); y.setValue(x.getValue()); x.clearContent(); strformula = "=split(K" + i + ",\"/\")"; x.setFormula(strformula); } /* 所要時間の[ss]表示 */ var secondTime = '[ss]'; for(i=2;i <= lastRow;i++){       var numberRange=sheet.getRange(i,6,lastRow);       numberRange.setNumberFormat( secondTime ); } /* 週番号の追加 */ var x=sheet.getRange(1,7); var y=sheet.getRange(1,8); var z=sheet.getRange(1,9); var w=sheet.getRange(1,10); x.setValue('週番号'); y.setValue('日にち'); z.setValue('所要時間(hh:mm)'); w.setValue('曜日'); var NumFormats = '0'; for(i=2;i <= lastRow;i++){ var x=sheet.getRange(i,7); var y=sheet.getRange(i,8); var z=sheet.getRange(i,9); var w=sheet.getRange(i,10); weeknum = "=WEEKNUM(D" + i + ")"; x.setFormula(weeknum); x.setNumberFormat( NumFormats ); daynum = "=day(D" + i + ")"; y.setFormula(daynum); hhmm = "=TEXT(F" + i + ",\"hh:mm\")"; z.setFormula(hhmm); week = "=TEXT(D" + i + ",\"ddd\")"; w.setFormula(week); } /* シートを追加し、値とフォーマットのペースト */ var sheet2 = spreadsheet.insertSheet("data"); sheet.getRange("A:I").copyTo(sheet2.getRange("A:I"), {formatOnly:true}); //sheet.getRange("A:I").copyTo(sheet2.getRange("A:I"), {contentsOnly:true}); } ### 試したこと 何がいけないのか調べたのですが無知識で全く分かりませんでした。 (自分のメールアドレスと、スプレッドのフォルダIDのところは実際はきちんとしたものを入力しています。)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

papinianus

2020/02/25 06:31

引用元を記載してください。著作物です。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。