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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

15754閲覧

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

sunao

総合スコア5

Google スプレッドシート

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

Google Apps Script

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

0グッド

0クリップ

投稿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のところは実際はきちんとしたものを入力しています。)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2020/02/25 06:31

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

回答1

0

ベストアンサー

スクリプトエディタの実行メニューから、V8エンジンを無効にする、をクリックしてください。

投稿2020/02/25 06:29

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sunao

2020/02/25 06:53

ありがとうございます!実行できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問