Translate

2021年3月19日

Echo の音質を改善する7つの方法

Amazon Echo Plus(第2世代)#1

Echoで音楽を聴くようになったのは Amazon Echo(第3世代)からです。

当初は、無指向性モノラル スピーカーから流れる音楽に満足していました。しかし、Echo第3世代 をステレオ化したら、音の広がりが予想以上に気持ちがいい。

これならばと Echo Plus もステレオペア化。そして、低音に焦がれて Echo Sub(サブウーファー)を購入して Echo Plus ×2 + Echo Sub で 2.1ch 構成へと変遷してきています。

Amazon Echo 自宅での進化形

また、最初は Echoで音楽を聴くのが補助的な役割だったので、プライム会員なら無料で聴ける prime music を利用していましたが、Echo Plusを購入して音質がよくなったので、Amazon Music Unlimited Echoプラン(ワンデバイスプラン) に変更しました。

Echoプラン(ワンデバイスプラン) は、月額380円(2022年5月〜 月額480円)と、メジャーな音楽サブスクの中で最も安価なプランです。しかし、Echo2台のステレオ構成では利用できません。

Echo Plus 第2世代をステレオペアにしたときに、もっとEchoデバイスで音楽を楽しもうとAmazon Music Unlimited にアップグレードしました。

そんな、自宅の音響機器として成長してきた Echoデバイスでの音楽環境ですが、少しでも音楽を気持ちよく聴くための方法について紹介したいと思います。


1. 音質向上への近道は最新機種

新しい機種の方が、確実に音質が向上しています。下表はEchoに搭載されているスピーカーの比較表です。

Echoシリーズ最高峰の Echo Studioでは、ツイーター、ミッドレンジ、ウーファーと音域によって3種類のスピーカーが搭載されていますが、それ以外の Echoは、ツイーターとウーファーです。

Echo(第3世代)とEcho Plus(第2世代)を比べると、特に低音の響の差があるので、素人の耳でもウーファーの0.5インチ(1.27cm)の差を感じます。

Echo Dotは、第5世代になってスピーカーサイズが少し大きくなりました。Echo Show 5も第3世代になって少しだけスピーカーが大きくなっています。

Echoシリーズ ツイーター ミッドレンジ ウーファー
Echo(第3世代) 0.6インチ ×1   2.5インチ
Echo Plus(第2世代) 0.8インチ ×1   3.0インチ
Echo(第4世代) 0.8インチ ×2   3.0インチ
Echo Sub     6.0インチ
Echo Studio 1.0インチ ×1 2.0インチ ×3 5.25インチ
Echo Dot(第4世代) 1.6インチ
Echo Dot(第5世代) 1.73インチ
Echo Show 5 1.65インチ 4W
Echo Show 5(第3世代) 1.7インチ

Echo(第4世代)は無指向性スピーカーではない

Echo(第3世代)、Echo Plus(第2世代)までは、Amazonの説明にあるようにウーファーは下向きに、ツイーターはスピーカーの底に上向きに設置され、音を反響させて360°をカバーするモノラルスピーカーでした。

Echo(第3世代)のスピーカー位置 by Amazon

一方、新しくなった Echo(第4世代)は、全面に2つのツイーター、上面にウーファーという構成で、指向性のあるステレオ再生のスピーカーとなっています。

反響せずにダイレクトに音が伝わる構造なので、旧世代のEchoと比べれば、こもった感じがなくなり、音がクリアになっているのではないかと思われます。

Echo(第4世代)のスピーカー位置 by Amazon

2. ステレオペア化

Echoデバイスのステレオペア化による音質向上効果は抜群です。

Echo(第3世代)、Echo Plus(第2世代)ともに、ステレオペアにすることで音に広がりができクリアに聴こえるようになりました。

象と散歩: Amazon Echo Plus と BOSE SoundLink Revolve を聴き比べると涙が出るわけ で、360°無指向性スピーカーとしては、BOSEには敵わないと書いていますが、Echo Plus のステレオペア化で SoundLink と別れを告げました。

Echo(第4世代)を2台購入しても BOSE SoundLink revolve より安価です。ステレオペア化したEchoは、手軽に音楽を楽しめるとてもよい音響デバイスです。

しかし、旧機種はAmazonでは既に販売されておらず、Echo(第4世代)は、旧Echoデバイスとはステレオペアができません。

ステレオペアができるEchoデバイスの組み合わせは、Amazon.co.jp ヘルプ: ステレオペア対応のEcho端末 を参照してください。


2台のEchoをできるだけ離す

ステレオペア化したら2台のEchoデバイスをできる離して設置すると気持ちよく音の広がりを感じられます。

残念ながら、ステレオペア化しても左右のバランス(音量)は設定できないので、Echoデバイスを気持ちよく音楽が聴こえる位置に置くか、自分が聴く場所を移動するしかありません。


3. 低音を楽しむEcho Sub

Echo Subは、Alexaの機能を搭載しておらず、単純にEchoシリーズの低音を補強するサブ・ウーファーです。

Echo Plus でも、結構な低音を感じられますが、Jazzを聴くときにもっとベースの響きを感じたいと思い Echo Sub を購入しましたが、低音がとても気持ちよくなりました。

Echo Sub(サブウーファー)

下図は、ホワイトノイズを2.1ch環境で再生しているときの周波数帯域ですが、低音もしっかりと出ていることがわかります。

Echo Plus(第2世代)x2 + Echo Sub でホワイトノイズを再生したときの周波数帯域

ゲイリー・ピーコック と マリリン・クリスペル のアルバム「Azure」は、ダブルベースとピアノで奏でる独特の世界ですが、4曲目の「Bass Solo」もベースの低音を Echo Sub が気持ち良く伝えてくれます。

Gary Peacock Marilyn Crispell 「Azure」

象と散歩: Echo sub で立体音響+低音を楽しむ で書いていますが、1台の Echo Plus に Echo Sub を繋げる(1.1ch)より、Echo Sub なしのステレオペア化(2ch)の方が、いい音で聴けます。

Echo(第4世代)も、先ずは2台でステレオペアにしてからEcho Subを追加した方が、段階的に音質が向上され効果的ではないかと思います。

Echo Sub の置き場所によっては、床や家具が共振してしまいます。必要があればインシュレーター(防振材)を使ってください。


4. イコライザーで調整する

Echo は、ベース(低音)、ミドル(中音)、トレブル(高音)が、それぞれ±6段階で調整できます。Alexaアプリから手動で変更できますが、音声でもイコライザーを変更できます。

Alexa, 高音を上げて

といえば、トレブルを現在の設定から1段階強くします。

Alexa, 低音を下げて

で、低音を現在の設定から1段階弱くします。また、

Alexa, 中音をプラス3にして

と、"プラス/マイナスと数値” で直接指定することもできます。

Alexa, イコライザーをリセットして

で、「はい、イコライザーをリセットしました」と全ての値を0に戻します。


音を可視化して調整する

Echoでのオススメのイコライザー設定方法です。

下図は、Echo(第3世代)でホワイトノイズを再生したときの周波数帯域です。ホワイトノイズはあらゆる周波数が同じ強さの音なのでフラットなグラフになるはずです。

Echo(第3世代)では、低音域は出てないのは明白でしたが、ホワイトノイズを再生すると中音域が凹んでいることがわかります。

こもった感じに聴こえるのは、中音域が落ちこんでいるからだとわかりました。

Echo(第3世代)でホワイトノイズを再生したときの周波数帯域

イコライザーの中心周波数の記載はありませんが、ミドルを+6にして、トレブルを−3に設定してみると、

Echo(第3世代)オススメのイコライザー設定

中音域の凹みが減りました。

Echo(第3世代)でホワイトノイズを再生したときの周波数帯域(イコライザーで補正)

ボーカル楽曲は、これでかなり聴きやすくなりました。

音質は好みがあるので、ホワイトノイズがフラットになることが一概にいいということではありませんが、簡単に調べられるので、どんな周波数帯域が弱いのかを一度確認してみるといいと思います。


ホワイトノイズでスピーカー特性のチェック方法

専門的なオシロスコープがなくとも、iPhoneアプリの iAnalyzer(App内課金あり)でiPhoneのマイクで拾った音の周波数帯を確認できます。

  1. Apple Store で iAnalyze をダウンロード
  2. 「Alexa, ホワイトノイズを再生して」でホワイトノイズを再生
  3. iAnalyze で再生されているホワイトノイズを録音

と、簡単に音を可視化できます。


5. インシュレーターを使う

Echo Plus(第2世代)はそれなりに低音を響かせてくれるので、設置場所によっては、スピーカーの振動が伝わり家具がビリビリと共振してしまいます。

ウーファーの配置が異なりますが、同じサイズのウーファーを持つEcho(第4世代)も同じかと思います。

ビリビリ音が気になるようであれば、インシュレーター(防振材)を使いましょう。色々なタイプがありますがゴム素材のものを使うだけでも共振を軽減することができます。


6. 高い位置に設定する

高い位置にEchoデバイスを置くと音質がよくなるわけではありませんが、上から聞こえてくる音は自宅では新鮮で、カフェ気分が味わえます。

リビングに設置している Echo Plus は、2台とも高いところに置いて、Echo Subは床に置いています。

Amazon Echo Plus(第2世代)#2

7. Amazon Music HD に変更する

2021年6月9日から Amazon Music HD は、Amazon Music Unlimited に統合され、プライム会員なら月額 880円 または年額 8,800円(プライム会員でなければ月額980円)で高音質のストリーミングを聴けるようになりました。
Amazon Music HD

Amazon Music Prime は、標準音質(SD)として320kbpsでストリーミング配信されていますが、ファイルサイズを小さくするために圧縮され、元のオーディオ情報からデータが削除されています。

一方、Amazon Music Unlimited のHDではCDと同じオーディオ情報を保持し、Ultra HDになるとCDを超えるハイレゾ音源となります。ビットレートだけで比較すると、HDはSDの2倍、Ultra HDは10倍以上のビットレートで配信されています。

 
ストリーミングサービス 音質 圧縮方式等 ビットレート ビット深度/サンプルレート
Amazon Musci Prime Standard Definition(SD) ロッシー圧縮 最大 320kbps -
Amazon Music Unlimited
Amazon Music HD High Definition(HD) ロスレス(CD同等) 平均 850kbps 16bit/44.1KHz
Ultra HD ハイレゾ音源 平均 3,730kbps 24bit/44.1kHz〜192kHz

数値だけを見るとかなりの差がありますが、最上位機種の Echo Studio でなければ HD の意味はないのではないかと考えていました。

しかし、無料トライアル期間に Echo Plus x2 + Echo Sub の2.1ch環境で、Amazon Music HD に切り替えてみると、

HDだからいい音で聴けているというプラシーボ効果かもしれませんが、いい音になった気がします、、、。

無料期間終了までにダウングレードするかを現在、絶賛悩み中です。

最初からHDで契約するよりも、まず Unlimitedで Amazon Musicを体感して、それから HDプランにアップグレードして無料期間終了までにどちらで契約を継続するかを決めるのがいいのではないでしょうか。(Amazon Music HD 無料アップグレードにより削除)

<追記 2022.10.20>

Ultra HDは、Echo Studioでしか聞けませんが、Echo StudioでHDとUltra HDを聴き比べるとUltra HDは、音の一粒、一粒が明瞭で「いい音だな」と実感できます。また空間オーディオ(Dolby Atmos, 360 Reality Audio)も気持ち良い音楽体験を提供してくれます。

より音で音楽を楽しみたいのであれば、Echo Studio がオススメです。


Echo Show5 の音質改善

Echo Show5については、象と散歩: スマートスピーカーに画面があるともっと便利になる?で書いていますが、画面があるので、アルバムジャケット、アルバム名、曲名、アーティストが確認できます。

音楽は、2.1ch環境で聞いているので、Echo Show5で聴くのはPodcastなどの音声コンテンツですが、聞きやすい音ではありません。

Echo Show5

Echo Show5 も2台でステレオペアができますが、部屋の中に2台ある絵は想像できませんが、単体でも、

  • スピーカーの下に隙間を作る
  • イコライザーで調整する

で、音質の改善を図ることはできます。


スピーカーの下に隙間を作る

Echo Show5 のスピーカーは下向きになっているので、本体の下側(全面下の穴)から音が聞こえてきます。また低音が強いので、直接テーブルなどに置くと、共振もして、かなり聞きづらい音になってしまいます。

共振を抑えるためにゴム板のインシュレーターを使ってみましたが、スピーカーと設置面との距離が近いので音のこもりが改善されません。

純正のスタンドもありますが、竹製の茶托 の上に置いたらかなり改善されました。

井字竹茶托(小)縦85×横79×高11mm
価格:100円(税込、送料別) (2021/3/18時点)

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

郵便なら送料 140円

Echo Show5の音質改善では、スピーカーの下に隙間を作ることが大切です。


Echo Show5のイコライザー設定

Echo Show5でもホワイトノイズを再生させて周波数帯域を確認してみます。

Echo Show5 でホワイトノイズを再生したときの周波数帯域

中音が凹んでいるというよりは、低音と高音が強調されています。イコライザーはミドルをあげるのではなく、ベースとトレブルを下げます。

Echo Show5 オススメのイコライザー設定

ベースを-2トレブルを-1にするとほぼフラットとなります。

Echo Show5 でホワイトノイズを再生したときの周波数帯域(イコライザーで補正)

この設定をベースにあとは好みで変更してみてください。


Echoで音質改善 まとめ

Echoで気持ちよく聴くために下記の7つの改善について説明しました。

  1. 最新機種にする
  2. ステレオ構成にする
  3. Echo Sub(サブウーファー)を追加する
  4. イコライザーで調整する
  5. インシュレーターを使う
  6. 高い位置に設置する
  7. Amazon Music Unlimitedにする

今使っているEcho(単体)で、少しでもよい音にしたいというのであれば、

  • イコライザーで調整する
  • インシュレーターを使う
  • 高い位置に設置する

です。

イコライザーは、音の特徴を理解するためにホワイトノイズを再生して可視化してみてください。

2021年3月6日

Googleフォームの選択肢をシートのデータで更新する

ゾウでもわかる Google Apps Script

GAS(Google Apps Script)で Googleフォームのプルダウン、チェックボックス、ラジオボタンの選択肢をスプレッドシートの値で更新する方法についての説明です。

同じフォームを長く使っていて、時々フォーム上の選択肢を更新するような場合には、シート上で選択肢の値が管理できるようになるので便利です。

このサンプルコードでできることは、

  • シート上の値で選択肢の内容を更新
  • プルダウン、チェックボックス、ラジオボタンに対応
  • 更新できるの質問は1個(質問番号を指定)

です。


フォームとシートの作成(準備)

プルダウン、チェックボックス、ラジオボタンの選択肢の更新をするので、下記の3つの質問を作成します。選択肢はスプレッドシートから更新するので設定不要です。

  1. 商品名(プルダウン)
  2. 商品名(チェックボックス)
  3. 商品名(ラジオボタン)
Googleフォームのサンプル

次に選択肢をシートで管理するために、シートのA列1行目にタイトルを入れて、2行目からデータを入れます。

Googleスプレッドシート上の選択肢

これで準備は完了です。

次からがGoogle Apps Scriptの例になります。


プルダウンの選択肢を更新する

質問番号を指定して質問の選択肢を更新するという簡単なサンプルです。このサンプルコードはプルダウンの質問項目の選択肢用なので、指定した質問番号がチェックボックス、ラジオボタンの場合にはエラーとなります。

上記フォーム例では、プルダウンは1番目の質問です。

下記サンプルコードをスクリプトエディタのコードに貼り付けてください。

function updateFormList() {
  //フォームの質問番号
  var questionNo = 1
  //フォームID
  var formId  = '1234567890abcdefghijklmnopqrstuvwxyz'
  //シートID
  var sheetId = 'zyxwvutsrqponmlkjihgfedcba0987654321'
  //シート名
  var sheetName = 'List'
  //データ配置列名
  var colName = 'A'
  //データ開始行
  var rowNum = 2
 
  //フォームの取得
  var form = FormApp.openById(formId)
  //全質問項目を取得
  var items = form.getItems()
  //questionNoで指定した質問項目を指定(配列は0から始まるので-1)
  var item = items[questionNo-1]

  //スプレッドシートを取得
  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName)
  //シートの最終行を取得
  var lastRow = sheet.getLastRow()

  //リスト内容の取得
  var arrList = sheet.getRange(colName + rowNum + ':' + colName + lastRow).getValues()

  //選択肢をフォームに反映
  item.asListItem().setChoiceValues(arrList)
}

フォームの質問番号

更新する質問番号を3行目の変数(questionNo)に代入します。上記のGoogleフォームの例ではプルダウンの質問は1番目なので1を指定します。

 2.  //更新するフォームの質問番号
 3.  var questionNo = 1

実際には配列として取得されるので1番目の質問項目は、配列の0番目となるので、16行目で questionNo-1 としています。

19.  //questionNoで指定した質問項目を指定(配列は0から始まるので-1)
20.  var item = items[questionNo-1]

フォームIDとシートID

GoogleフォームとGoogleスプレッドシートは、IDで取得しています。

フォームIDについては、象と散歩: GASでGoogleフォームの値を取得する(フォームを指定) でも説明していますが、再掲となります。

Googleフォームの編集URLが下記の場合、フォームIDは、赤字の部分です。

https://docs.google.com/forms/d/1234567890abcdefghijklmnopqrstuvwxyz/edit

シートIDも同様でに赤字の部分となります。

https://docs.google.com/spreadsheets/d/zyxwvutsrqponmlkjihgfedcba0987654321/edit

5行目にシートIDを7行目にシートIDを指定していますが、作成したフォームとスプレッドシートのURLを確認して書き換えてください。

 4.  //フォームID
 5.  var formId = ‘1234567890abcdefghijklmnopqrstuvwxyz'
 6.  //シートID
 7.  var sheetId = 'zyxwvutsrqponmlkjihgfedcba0987654321'

シート名

9行目にスプレッドシートのシート名を指定します。今回のサンプルではシート名をListとしています。

 8.  // シート名
 9.  var sheetName = 'List'

データ開始位置

10-13行目でシートのデータ開始を指定します。例ではA列2行目からが選択肢のデータとなりますので、11行目の colName にAを、13行目の rowNum に2を指定します。

10.  //データ配置列名
11.  var colName = 'A'
12.  //データ開始行
13.  var rowNum = 2

プルダウン選択肢の更新

28行目で、指定したデータ開始位置(A列2行目)からデータがある最終行までを arrList に格納しています。

シート上の 商品A, 商品B, 商品C が、

arrList[0]    商品A
arrList[1]    商品B
arrList[2]    商品C

として格納されます。

そして、31行目で、この配列の値でフォームの質問番号に該当する質問の選択肢(プルダウン)を更新しています。

30. //選択肢を更新する
31. item.asListItem().setChoiceValues(arrList)

asListItem() はプルダウン項目用なので questionNo で指定した質問がプルダウンでない場合にはエラーとなるので注意してください。item.getType() で質問のタイプを確認することができます。プルダウンの質問のタイプは LIST です。

updateFormList を実行します。

スクリプトエディタから実行

ログには実行完了とだけ表示されますが、フォームを参照すると、

Googleフォーム プルダウン形式

シート上のデータでプルダウンの選択肢が更新されています。


チェックボックスの選択肢を更新する

スプレッドシート上にある選択肢を配列に入れて、フォームの選択肢を更新する処理は基本的には同じです。プラダウンのサンプルを実行されたのであれば変更箇所は2箇所だけです。


フォームの質問番号

更新する質問番号を3行目の変数(questionNo)に代入しますが、上記のGoogleフォームの例ではチェックボッククスの質問は2番目なので2を指定します。

 2.  //更新するフォームの質問番号
 3.  var questionNo = 2

チェックボックス選択肢の更新

31行目をチェックボックス項目用の asCheckboxItem() に変更します。またチェックボックスは、選択肢に「その他」を設定できますが、showOtherOption() でその他の有無を指定します。

  • showOtherOption(true)    その他 あり
  • showOtherOption(false)   その他 なし

その他の選択肢を追加する場合の例となります。

30. //選択肢を更新する
31. item.asCheckboxItem( ).setChoiceValues(arrList).showOtherOption(true)

updateFormList を実行すると、商品A ,B,C と その他の選択肢が追加されます。

Googleフォーム チェックボックス形式

チェックボックスを更新するコード全体はこちらです。

function updateFormList() {
  //フォームの質問番号
  var questionNo = 2
  //フォームID
  var formId  = '1234567890abcdefghijklmnopqrstuvwxyz'
  //シートID
  var sheetId = 'zyxwvutsrqponmlkjihgfedcba0987654321'
  //シート名
  var sheetName = 'List'
  //データ配置列名
  var colName = 'A'
  //データ開始行
  var rowNum = 2
 
  //フォームの取得
  var form = FormApp.openById(formId)
  //全質問項目を取得
  var items = form.getItems()
  //questionNoで指定した質問項目を指定(配列は0から始まるので-1)
  var item = items[questionNo-1]

  //スプレッドシートを取得
  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
  //シートの最終行を取得
  var lastRow = sheet.getLastRow()

  //リスト内容の取得
  var arrList = sheet.getRange(colName + rowNum + ':' + colName + lastRow).getValues()

  //選択肢をフォームに反映
  item.asCheckboxItem( ).setChoiceValues(arrList).showOtherOption(true)
}

ラジオボックスの選択肢を更新する

続いて、ラジオボックの場合となります。こちらも変更箇所は2箇所だけです。


フォームの質問番号

ラジオボックスの質問は3番目なので questionNo に を代入します。

 2.  //更新するフォームの質問番号
 3.  var questionNo = 3

ラジオボックス選択肢の更新

35行目をラジオボックス用の asMultipleChoiceItem() に変更します。今回は、「その他」の選択肢を付けない showOtherOption(false) とします。

30. //選択肢を更新する
31. item.asMultipleChoiceItem().setChoiceValues(arrList).showOtherOption(false)

updateFormList を実行すると、商品A ,B,C がラジオボックの選択肢として追加されます。

Googleフォーム ラジオボタン形式

ラジオボックスを更新するコード全体はこちらです。

function updateFormList() {
  //フォームの質問番号
  var questionNo = 3
  //フォームID
  var formId  = '1234567890abcdefghijklmnopqrstuvwxyz'
  //シートID
  var sheetId = 'zyxwvutsrqponmlkjihgfedcba0987654321'
  //シート名
  var sheetName = 'List'
  //データ配置列名
  var colName = 'A'
  //データ開始行
  var rowNum = 2
 
  //フォームの取得
  var form = FormApp.openById(formId)
  //全質問項目を取得
  var items = form.getItems()
  //questionNoで指定した質問項目を指定(配列は0から始まるので-1)
  var item = items[questionNo-1]

  //スプレッドシートを取得
  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName)
  //シートの最終行を取得
  var lastRow = sheet.getLastRow()

  //リスト内容の取得
  var arrList = sheet.getRange(colName + rowNum + ':' + colName + lastRow).getValues()

  //選択肢を更新する
  item.asMultipleChoiceItem().setChoiceValues(arrList).showOtherOption(false)
}

更新する質問のタイプを確認しよう(22.2.11追記)

何件かご質問もいただきましたが、上記のサンプルで実行エラーとなる場合の多くは、質問番号で指定した番号の質問タイプと利用するメソッドが違う場合です。

下記のエラーが出力される場合が、

エラー Exception: Invalid conversion for item type: XXXXX

更新しようとする質問のタイプとメソッドが一致していない場合に出力されるエラーで、type:XXXX には、指定した質問のタイプが表示されます。

Gooleフォームで設問に指定できる項目とタイプについて下表にまとめています。

質問項目タイプ更新に利用するメソッド
プルダウンLISTasListItem()
チェックボックスCHECKBOXasCheckboxItem()
ラジオボタンMULTIPLE_CHOICEasListItem()
記述式TEXT-
段落PARAGRAPH_TEXT-
ファイルのアップロードFILE_UPLOAD-
均等メモリSCALE-
選択式(グリッド)GRID-
チェックボックス(グリッド)CHECKBOX_GRID-
日付DATE-
時刻TIME-
セクションPAGE_BREAK-
タイトルSECTION_HEADER-
画像IMAGE-
動画VIDEO-

セクション、写真、動画なども質問となるので指定する番号に注意してください。


質問タイプを確認するコード

Loggerで指定した質問番号のタイプをログに出力するコードを追加してみてください。

19. //questionNoで指定した質問項目を指定(配列は0から始まるので-1)
20. var item = items[questionNo-1]

下記のコードを21行目以降に追加します。

  Logger.log('質問総数:' + items.length)
  Logger.log('質問番号:' + questionNo)
  Logger.log('タイトル:' + item.getTitle())
  Logger.log('タイプ:' + item.getType())

下記のように、質問総数、指定した質問番号(questionNo)、質問のタイトル、タイプが出力されます。

情報 質問総数:3
情報 質問番号:1
情報 タイトル:商品名(プルダウン)
情報 タイプ:LIST

下記は、更新はせずに、指定した質問番号のタイプを確認するサンプルコードです。

function updateFormList() {
  //フォームの質問番号
  var questionNo = 1
  //フォームID
  var formId  = '1234567890abcdefghijklmnopqrstuvwxyz'
 
  //フォームの取得
  var form = FormApp.openById(formId)
  //全質問項目を取得
  var items = form.getItems()
  //questionNoで指定した質問項目を指定(配列は0から始まるので-1)
  var item = items[questionNo-1]

  Logger.log('質問総数:' + items.length)
  Logger.log('質問番号:' + questionNo)
  Logger.log('タイトル:' + item.getTitle())
  Logger.log('タイプ:' + item.getType())
}

スプレッドシートのメニューから実行する

下記のコードを追加すると、スプレッドシートを開いたときに、メニューに "Form選択肢更新" が追加されます。

スプレッドシートのメニューに追加

”商品名更新” を選択すると updateFormList() がスクリプト エディタを開かなくても実行できます。

function onOpen(){ 
  SpreadsheetApp
    .getActiveSpreadsheet()
    .addMenu('Form選択肢更新', [
      {name: '商品名更新', functionName: 'updateFormList'},
    ]);
}

GASの基礎を学べる参考図書

ある程度プログラミンがわかっていれば、WEBやYoutubeでも十分に調べられると思いますが、初歩的なところからであれば参考図書は有効な学習手段です。

詳解! Google Apps Script完全入門 [第3版]」は、プラグラミング初心者にわかりやすく説明されています。GASを最初に学ぶ一冊として良書です。

アクセス上位(過去7日間)