0

スクリプトを使用して「#」記号をセルに挿入しようとすると、問題が発生しました (送信がフォームから送信されたときに実行がトリガーされます)。

私はこのようにしようとしました:

somecell.setFormula('=HYPERLINK("http://www.some.link/some/'+var+'#1a2b3c","'+var+'")');

したがって、出力は次のようになります。

=HYPERLINK("http://www.some.link/some/1234#1a2b3c","1234")

ただし、常に挿入されます (記号の後の # と残りのリンクはありません)。

=HYPERLINK("http://www.some.link/some/1234","1234")

実行中に報告されるエラーはありません。式に挿入されるように、記号をスクリプトにどのように配置すればよいですか? ...1234(バックスラッシュ)#1a... を試してみましたが、うまくいきません。

編集 スクリプトはどのように機能しますか (要するに): まず、シートはエントリの 1 つとして URL を含むフォーム送信を受け取ります。次に、スクリプトはリンクの一部を切り取り (.split('/').pop()を使用して、 .splitが作成した配列の最後の要素を取得します)、これによって抽出された変数が.setFormulaで使用されます。上記はvarとして表示されます。

また、もう一度試しました。バックスラッシュは機能しません - # の後 (および含む) はすべて削除されます。

4

2 に答える 2

0

私はあなたの例を次のように試しました:

function test(){
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var xx = '1234'
  sh.getRange('A2').setFormula('=HYPERLINK("http://www.some.link/some/'+xx+'#1a2b3c","'+xx+'")');
}

そして私は期待される結果を得る

ここに画像の説明を入力

于 2013-07-15T14:51:57.060 に答える
0

文字をエスケープするには、バックスラッシュを含める必要があります。

function addlink() {
  var somecell = SpreadsheetApp.getActiveSpreadsheet().getRange('F2');
  var blah = "123";
  somecell.setFormula('=HYPERLINK("http://www.some.link/some/'+blah+'\#1a2b3c","'+blah+'")');
  //                                                                ^^^
}
于 2013-07-15T14:32:17.330 に答える